Weiterverarbeitung von Kommandozeilenparametern



  • Hallo an alle
    Vorweg: Ich bin in C ein ziemlicher Anfänger 🙂

    Meine 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. 😉


Log in to reply