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.


Anmelden zum Antworten