Weiterverarbeitung von Kommandozeilenparametern
-
Hallo an alle
Vorweg: Ich bin in C ein ziemlicher AnfängerMeine Frage:
In argv[] sind ja die verschiedenen übergebenen Kommandozeilenparameter gespeichert. Also mit argv[1], argv[2] etc... kann ich auf die einzelnen Parameter zugreifen.
Wie kann ich aber nun auf einzelne Zeichen der Parameter zugreifen? Normalerweise ist in C ein String ja als char Array gespeichert, und mit string[0], string[1] etc. kann ich auf die einzelnen Zeichen zugreifen.
Wie funktioniert das bei den übergebenen Parametern? Bzw. wie kann ich die einzelnen Parameter in "normale" Strings umwandeln um damit zu arbeiten?
-
argv[i][j]
-
argv[0] ... argv[argc-1] sind "normale" strings.
für den zugriff auf die einzelnen zeichen brauchst du den zweiten index operator
argv[i][j]
-
das liegt daran, dass argv ein array von zeigern auf char* ist.
-
OK, danke für die Antworten!
Ich hatte bis jetzt herausgefunden dass es auch geht indem ich argv[1] mit strcpy() in einen anderen String kopiere, und den ganz normal verwende.Doch wenn ich jetzt zum Beispiel
printf("%s\n",argv[1][0]);
probiere, stürzt das Programm ab.
printf("%s\n",argv[1]);
funktioniert jedoch ohne Probleme
-
Willst du jetzt ein Zeichen oder eine Zeichenkette haben?
Großer Unterschied.argv[1][0] ergibt das erste Zeichen der 2. Zeichenkette
printf("%c\n",argv[1][0]); // mit %c
argv[1] ergibt die 2. Zeichenkette
printf("%s\n",argv[1]); // mit %s
-
DirkB schrieb:
argv[1][0] ergibt das erste Zeichen der 2. Zeichenkette
printf("%c\n",argv[1][0]); // mit %c
Ah ja klar... Danke
Die Ausgabe von Variablen in C finde ich um ehrlich zu sein etwas seltsam
-
Geminus schrieb:
...[/cpp]
btw. macht es nicht viel sinn, die argv parameter noch einmal zu kopieren.
-
Geminus schrieb:
Die Ausgabe von Variablen in C finde ich um ehrlich zu sein etwas seltsam
Ja, man muss schon wissen was man tut.
Wenn man es dann allerdings weiß, dann ist es auch kein Problem mehr.