strcmp



  • achso, deswegen ist das Programm abgestürtz. Habe jetzt anstatt
    if (strcmp(argv[i], "--version")), if (strcmp(argv[0], "--version")) hin geschrieben, also i mit 0 getauscht, aber wieso verstehe ich nicht so richtig ?



  • In dem Array sind die übergebenen Parameter enthalten, startend bei Index 1 (0 enthält den Dateinamen).



  • achso dankeschön, ich habe noch 2 weiter fragen. Undzwar kann man die version des compiler nicht irgendwie ausgeben. Also so ungefähr:

    if (strcmp(argv[0], "--version") )
    printf("getversion\n");   // getversion ist frei erfunden, aber gibt es nicht   sowas ähnliches ? Oder sowas
    
    if (strcmp(argv[0], "--help") )
    printf("gethelp\n");    // das wäre dann so ähnlich als ob ich in der windows console (cmd) help eingeben würde
    


  • Saido schrieb:

    achso dankeschön, ich habe noch 2 weiter fragen. Undzwar kann man die version des compiler nicht irgendwie ausgeben. Also so ungefähr:

    if (strcmp(argv[0], "--version") )
    printf("getversion\n");   // getversion ist frei erfunden, aber gibt es nicht   sowas ähnliches ? Oder sowas
    
    if (strcmp(argv[0], "--help") )
    printf("gethelp\n");    // das wäre dann so ähnlich als ob ich in der windows console (cmd) help eingeben würde
    

    Mit Makros geht das sicher, aber macht eigentlich keinen großen Sinn.



  • ok danke schön, aber ich habe noch eine frage wenn es geht 😕
    also mein programm läuft bis auf eine kleinigkeit, er gibt immer die version aus, obwohl ich eine if anweisung habe, die es nur erlaubt wenn mann --version eingibt. Hier nochmal das komplette ding:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main (int argc, char *argv[])
    {
       int i;
           printf("Ninja Machine started\n");
    
    i=0;
    
        while (i<argc)
        {
    
            printf("%s \n",argv[i]);
            i++;
       }
    
    	if (strcmp(argv[0], "--version") )
    	{
    		printf("version\n");
    		}
    
          else  if (strcmp(argv[1], "--help") )
    	{
    		printf("help\n");
    		}
    
        printf("%d parameters entered on the command line.\n",i);
        printf("Ninja Machine stoped\n");
    return 0;
    }
    


  • Janjan schrieb:

    In dem Array sind die übergebenen Parameter enthalten, startend bei Index 1 (0 enthält den Dateinamen).



  • verstehe das nicht so richtig, was muss ich verändern ?



  • Saido schrieb:

    verstehe das nicht so richtig, was muss ich verändern ?

    if (strcmp(argv[1], "--version") == 0) // argv[1] und nicht argv[0]
    {
       printf("version\n");
    }
    else if (strcmp(argv[1], "--help") == 0)
    {
       printf("help\n");
    }
    


  • Nochmal als Beispiel. Programmaufruf Test.exe Para1 Para2 Para3

    argv[0] = "Test.exe"
    argv[1] = "Para1"
    argv[2] = "Para2"
    argv[3] = "Para3"



  • Alles klar, vielen dank. Ihr habt mir echt geholfen!!! 👍 👍 👍


Anmelden zum Antworten