argv[0] schützen?



  • hallo,

    ich habe eine funktion geschrieben, die den inhalt von argv[0] verändert.

    das ist allerdings sehr unpraktisch, da man das richtige/unveränderte argv[0] später vielleicht noch braucht.

    deswegen die frage: wie bekomme ich den inhalt von argv[0] in ein char-array, dass ich dann meiner funktion übergeben kann, ohne dass das richtige argv[0] verändert wird?
    irgendwie bekomm ich das mit dem pointer zeigt auf pointer und so nicht hin...



  • strcpy(deine_charArrayVariable_mit_genug_Platz, argv[0]);
    


  • DirkB schrieb:

    strcpy(deine_charArrayVariable_mit_genug_Platz, argv[0]);
    

    ok, daran hatte ich auch schon gedacht.
    gibt es vielleicht noch eine andere möglichkeit mit einfacher zuweisung?
    damit meine ich sowas (nur ein beispiel):

    char *argv_0=argv[0];
    

    funktioniert natürlich nicht...

    p.s.: seltsam, ich hab bei benutzername ":)" angegeben, das wird aber zu "_)" gemacht.



  • nochwas:
    ich brauche einen pointer auf ein char array für die funktion.



  • _) schrieb:

    nochwas:
    ich brauche einen pointer auf ein char array für die funktion.

    Ja und?
    Wo ist da Problem?

    Dann mach dir einen.

    Bedenke aber das ein Pointer nicht automatisch auch Speicher zur Verfügung stellt auf den er zeigt.
    Ein Array macht dies allerdings. Und zerfällt auch noch in eine Adresse, wenn man es nur mit dem Namen anspricht.

    Lies dir noch mal dir Grundlagen zu Zeichenketten/Strings und Arrays in C durch.

    Mit dem

    char *argv_0=argv[0];
    

    hast du einen Zeiger auf argv[0] bekommen. Also auf das Original. Das macht keine Kopie.

    Sonst zeig mal was du wie versuchst.



  • das war meine lösung



  • natürlich bin ich mir bewusst, dass das auf den inhalt von argv[0] direkt zugreift, aber ich wüsste nicht, wie ich das sonst machen sollte.



  • Warum wird bei dir argv[0] überhaupt verändert?

    Das dies eine blöde Idee ist, hast du ja schon gemerkt.



  • ich finde pointer nicht ganz so sperrig wie arrays, aber es hat halt auch solche "nebeneffekte" wie der hier.



  • Den eignen Dateinamen des Programms manipulieren? Oder hab ich da etwas falsch verstanden? Warum?

    Programmiersprache soll C sein?



  • ähm... dateinamen manipulieren? was soll denn das bringen?



  • p.s.: mit argv[0] kannste überhauptnix manipulieren...



  • Kopier den Inhalt von argv[0] in ein anderes Array und veränder' dieses (und nicht argv[0]).
    Alles was du brauchst sind strlen, strcpy und das Wissen um die Nullterminierung von Zeichenketten (einfach ein wenig googlen).



  • _schland schrieb:

    ... (einfach ein wenig googlen).

    Besser: Ein Buch über C durcharbeiten.



  • DirkB schrieb:

    _schland schrieb:

    ... (einfach ein wenig googlen).

    Besser: Ein Buch über C durcharbeiten.

    hab ich schon...

    wie auch immer, ich danke euch allen.



  • _) schrieb:

    DirkB schrieb:

    Besser: Ein Buch über C durcharbeiten.

    hab ich schon...

    Blablabla, hast du nicht.



  • Steffo schrieb:

    _) schrieb:

    DirkB schrieb:

    Besser: Ein Buch über C durcharbeiten.

    hab ich schon...

    Blablabla, hast du nicht.

    doch, "C Primer Plus" heißt es.



  • Ich habe nicht geschrieben: Du musst ein Buch haben. 😉



  • DirkB schrieb:

    Ich habe nicht geschrieben: Du musst ein Buch haben. 😉

    ich habe es und ich habe es durchgearbeitet.



  • Nichts für Ungut, aber:

    Sind da viele Bilder mit einem gelben Hund und einer sprechenden Maus in dem Buch? Gab's da eine Verwechslung?

    Du stellst Fragen, die in jedem anständigen Buch derart eingehend behandelt werden, dass man - sofern es "durchgearbeitet wurde" - dringend einen Arzt kontaktieren sollte, wenn man die Antwort darauf nicht weiß...

    Da musst Du Dir schon gefallen lassen, dass man kritisch hinterfragt.


Log in to reply