Kommanozeilen Argumente durch zwei Zeilen
-
Hallo,
ich suche nach einer Möglichkeit, Kommandozeilen-Argumente, die zwei Zeilen beinhalten, zu erfassen.
Und zwar nach dem Schema:#include<stdio.h> int main(int argc, char* argv[]) { return 0; }
Gibt es eine Möglichkeit, eventuell durch ein zweidimensionales Array - zum Beispiel argv[a][b] - die Eingaben durch zwei Zeilen zu erfassen?
Zum Beispiel, sei die Eingabe:
Erste Zeile: Hallo 9 5 3
Zweite Zeile: 9 5 3 Super
Dann wäre, argv[1][1]= Hallo und arg[2][4] = super
Vielen Dank und viele Grüße,Diegel
-
Geht nicht wie du dir das vorstellst. Nach dem ersten Return wird dein Programm gestartet. Du könntest ein anderes Zeichen als Zeilentrenner benutzen.
-
argv ist vom Typ char**, wenn du den 2x dereferenzierst hast du den Typ char und nicht char*, wie du es gerne hättest.
Besser wäre es, die Zeilen nicht als Argument zu übergeben, sodern zu pipen, z.B.echo -e "Hallo 9 5 3\n9 5 3 Super\n" | ./a.out
und dann im C-Programm einfach zeilenweise mit fgets von stdin lesen und mit sscanf oder strtok die Wörter zu separieren.
-
Hallo Z und Wutz,
Vielen Dank für eure Antworten - das Hilft schon weiter. Ich arbeite mich durch das Pipen.
Viele Grüße
Diegel
-
Wenn deine Zeileninhalte zu kompliziert werden um sie als Literal überall durchzuziehen, kannst du diese auch in eine Datei schreiben und dann daraus lesen:
./a.out < datei.txt oder cat datei.txt | ./a.out
jeweils kannst du da immer noch in C bequem aus stdin lesen, ohne dich um Dateiverwaltung kümmern zu müssen, wie es bei
./a.out datei.txt
der Fall wäre.