Zugriff auf einzelnen Char in Array of Strings



  • Hallo liebe Community,

    langsam bin ich am verzweifeln. Ich versuche auf ein einzelnes Char in einem Array of Strings zuzugreifen und scheitere kläglich.
    Insgesamt geht es um eine selbst geschriebene Shell unter Linux, das spielt hier abber keine größere Rolle. Jedenfalls lese ich die Eingabe (zB "cd /root/bla") so ein, dass jedes Argument in einem String in einem "großen" Array steht, jeweils an den " " getrennt. Bei der Eingabe sieht mein Array also so aus :

    my_argv[0]="cd"
    my_argv[1]="/root/bla"
    

    Nun möchte ich testen, ob das 1. Zeichen das 2. Arguments ein "/" ist.
    Ich dachte ja an sowas wie :

    char *p = my_argv[1] // Zeiger auf anfang vom 2. String (oder ??)
    if (p=="/") 
        /* do something */
    

    Funktioniert aber nicht.. Ich wäre euch echt dankbar, wenn ihr mir helfen könnt.

    Grüße
    fjoi


  • Mod

    my_argv[1][0]

    Oder in deinem Beispiel p[0]

    Außerdem ist "/" kein einzelnes Zeichen, sondern selber ein C-String. '/' ist ein einzelner char.



  • SeppJ hat eigentlich schon alles gesagt, aber die Lösung komplett wäre wohl:

    my_argv[0]="cd"
    my_argv[1]="/root/bla"
    
    /* ... */
    
    if (argv[1][0] == '/') 
        /* do something */
    


  • earli schrieb:

    SeppJ hat eigentlich schon alles gesagt, aber die Lösung komplett wäre wohl:

    my_argv[0]="cd"
    my_argv[1]="/root/bla"
    
    /* ... */
    
    if (argv[1][0] == '/') 
        /* do something */
    

    Ist nicht ganz komplett, da Semikola vergessen. :p



  • my_argv[0]="cd"
    my_argv[1]="/root/bla"
    char *p = my_argv[1] // Zeiger auf anfang vom 2. String (oder ??)
    if (*p=="/") 
        /* do something */
    


  • ohhhh man, so nah und doch so fern.
    Keine Ahnung waurm ich das mit dem 2-Dim Arrayzugriff nicht probiert habe.
    Wobei die Variante mit dem *p mir besser passt.

    Jedenfalls : Vielen,vielen Dank für die schnelle Hilfe 👍



  • _matze schrieb:

    Ist nicht ganz komplett, da Semikola vergessen. :p

    Copypaste, die fehlten schon im OP. 🙂


Log in to reply