char array wie argv[]



  • Hallo,

    ich habe mir eine Funktion zusammen gebaut wie:
    Funktionsprototyp:

    void	dostuff(int , char *[]);
    

    also sowas wie

    int
    main(int argc, char *argv[])
    {
    //...
    }
    

    jedoch, wollte ich dann sowas in der Art übergeben..

    char *mystuff[3]  = {"Hallo","World","fuckoff"};
    dostuff(3, mystuff);
    

    Kompiliert wird alles sauber, und ich habe dann im ersten *argv auch mein "Hello", jedoch nach einem iterieren argv++; und einem strcmp ... usw. ist argv nicht mehr Existent. Ich frage mich, schaut mein mystuff richtig aus? Jemand eine Idee?


  • Mod

    Bringe mehr Code, das was du zeigst funktioniert:
    http://codepad.org/naxYBEt5



  • Wie definierst du "nicht mehr existent"?
    Wenn du einen Zeiger erhöhst, schiebst du ihn damit auf eine andere Adresse, damit bleiben die Daten, auf die er ursprünglich gezeigt hatte, aber erhalten. Und du könntest mit --argv; auch wieder zur alten Position zurückspringen.

    PS: Allerdings könnte es ein Problem geben, wenn die aufgerufene Funktion die übergebenen Strings ändern will - du übergibst drei String-Literale und die sind eigentlich nicht veränderbar.


Anmelden zum Antworten