[c] Kommandozeile vergleichen

BastianW

Mitglied
Hallo zusammen,

ich versuche mir im moment C bei zu bringen und stehe nun vor einem Problem.

Ich übergebe meinem kleinen Programm test.exe ein paar befehlszeilen

"test.exe /? /help /wasdas /config"

die möchte ich nun verarbeiten.

Egal wie ich es anstelle... er gibt mir nicht das aus was ich bei "/?" erwarten würde...

Code:
int main(int argc, char **argv[])   // argc = argument counter, argv = argument variables
{


 int i;

        for(i=0; i<argc; i++)
        {
        // we will check now our parameter

        printf("Test1xx\n");

        printf("\nParameter %i: %s\n",i,argv[i]);


            if(argv[i] == "/?")
            {
                printf("Test2xx\n");
            }


        }



// check_command_line(argc,argv);


    printf("Hello world!\n");
    return 0;
}
 
Code:
int main(int argc, char **argv[])   // argc = argument counter, argv = argument variables
Das muss char *argv[] heißen (ein Array von Zeigern auf char, also ein Array von C-Strings).

Code:
            if(argv[i] == "/?")
Da ein String in C nichts weiter als ein Zeiger ist, vergleichst du hier zwei Zeiger miteinander. Wenn du die Strings vergleichen willst, musst du strcmp o.ä. verwenden.

Grüße, Matthias
 
Das muss char *argv[] heißen (ein Array von Zeigern auf char, also ein Array von C-Strings).

Mein Buch sagt hier:

Die deklaration chat *argv[] bedeuted, zweiger auf zweiger auf zeichen. Sie können auch **argv schreiben... Und zeiger auf zeiger würde ich mit zwei * übersetzten.

Wenn du die Strings vergleichen willst, musst du strcmp o.ä. verwenden.

Hey super danke das klappt... komme leider aus der PHP ecke... da ist doch vieles anders als in C.
 
Mein Buch sagt hier:

Die deklaration chat *argv[] bedeuted, zweiger auf zweiger auf zeichen. Sie können auch **argv schreiben... Und zeiger auf zeiger würde ich mit zwei * übersetzten.
Dann war das wohl ein Missverständnis. Du kannst entweder char *argv[] schreiben oder char **argv. Beides vermischen ist nicht gut :)

Hey super danke das klappt... komme leider aus der PHP ecke... da ist doch vieles anders als in C.
Dann wünsch ich dir schon mal viel Geduld. Für jemanden der noch nie mit manueller Speicherverwaltung in Berührung gekommen ist, kann der Frustfaktor mit C anfangs ziemlich hoch sein (bis man die Konzepte begriffen und verinnerlicht hat).

Grüße, Matthias
 
Dann war das wohl ein Missverständnis. Du kannst entweder char *argv[] schreiben oder char **argv. Beides vermischen ist nicht gut :)

Ah ok... das mit dem Zeigern ist noch so eine Herausforderung die ich lösen muss. Bis jetzt kenne ich von PHP halt nur Arrays bzw. Multidimensionale Arrays. Das ist da doch schon ganz anders.

Dann wünsch ich dir schon mal viel Geduld. Für jemanden der noch nie mit manueller Speicherverwaltung in Berührung gekommen ist, kann der Frustfaktor mit C anfangs ziemlich hoch sein (bis man die Konzepte begriffen und verinnerlicht hat).

OHJA :-), definitiv...
 
Zurück