Konsolen Parameter Uebergabe
-
Ich moechte aus der Dos bzw. Console mein Programm mit verschiedenen Parametern aufrufen.
Jetz hab ich folgenden Beitrag gefunden:
http://www.c-plusplus.net/forum/viewtopic.php?t=86603&highlight=dos+parameter
So meine Fragen dazu:
Der eigentliche Parameter liegt dann in argv[1]. argv ist ein Pointerarray. Jedes "Feld" enthaelt einen String.
Hab ich das soweit richtig verstanden?Wie kann ich das Feld argv[1] nun weiterverarbeiten? Ich kann es nicht mit if vergleichen.
Bzw. wie kann ich den String in ein Charakter Array ueberfuehren? Das heist ja dann wohl jedes Zeichen einzeln.
Dieses Bsp. ist eigentlich exact das was ich versuche zu veranstalten.
http://www.c-plusplus.net/forum/viewtopic.php?t=31578&highlight=dos+parameter
Nur leider in C++. Ich brauche es aber in C.Danke!
-
Ok fuer meinen Fall habe ich das Problem gerade geloest.
Was mich jetzt generell interessiert wie koennte ich zum Bsp. das Feld argv[1] in ein Charakter Array ueberfuehren. Das heist Zeichen 1 in Test[1], Zeichen 2 in Test[2].
Danke.
-
wo ist das Problem?
argv[1] ist ein ganz normales char-array.
Vergleichen tust du mit der funktion strcmp()
if (strcmp(argv[1], "hallo") == 0) { // mach halt was }
-
Mr. Ghent schrieb:
Ok fuer meinen Fall habe ich das Problem gerade geloest.
Was mich jetzt generell interessiert wie koennte ich zum Bsp. das Feld argv[1] in ein Charakter Array ueberfuehren. Das heist Zeichen 1 in Test[1], Zeichen 2 in Test[2].
Danke.
char buffer[128]; strcpy(buffer, argv[1]);
besser ist natürlich
char *pBuf = NULL; pBuf = new char [strlen(argv[1])+1]; strcpy(pBuf, argv[1]); // dein code ... delete[] pBuf;
-
Dir scheint nicht ganz klar zu sein, was du eigentlich benutzt:
bei argv handelt es sich um ein zweidimensionales Feld (darum ja auch char** argv bzw. char* argv[])Wenn du dir die einzelnen Zeichen der Zeichenkette, die du dem Programm als Parameter übergeben hast, ausgeben lassen willst, dann greifst du darauf wie bei jedem anderen 2D-Feld zu:
// Den ersten Buchstaben des übergebenen Parameters anzeigen printf("%c",argv[1][0]);
Usw...
-
Ok Danke.
Fuers Verstaendis:
Zum Beispiel:
buffer[128] ==> Dort enthaelt jedes Feld ein Character!
argv ==> Hier enthaelt jedes Feld ein String!richtig?
-
ja und in argv[1] enthalt jedes Feld wieder ein char
das argv-array ist also ein array aus char-arrays mit der Größe argc-1
-
Danke...mir ist jetzt so einiges klar geworden.
-
Die Argumente, die du übergibts, stehen als Strings in einer Stringtabelle.