Umgebungsvariablen in char[] ablegen



  • Hallo!

    Ich versuche gerade vergeblich, einer Variablen mittels strcpy und/oder strcat den Output von

    getenv("QUERY_STRING")
    

    zuzuweisen. Der Quelltextausschnitt sieht folgendermaßen aus

    char q[20];
    
    // Variante 1
    strcpy(q, getenv("QUERY_STRING"));
    
    // Variante 2
    memset(&q, 0, sizeof(q));
    strcat(q, getenv("QUERY_STRING"));
    

    Leider funktioniert beides nicht. Da ich ein C Anfänger bin und leider nicht weiter weiß, bitte ich euch um Hilfe ..

    > Wie kann ich Umgebungsvariablen, wie z.B. "QUERY_STRING", einer Char Variablen zuweisen?

    Übrigens kann ich Umgebungsvar. problemlos mit

    printf("Query String: %s\n", getenv("QUERY_STRING"));
    

    ausgeben .. falls das wichtig ist.



  • Ich verstehe zwar nicht so ganz, warum deine Varianten nicht funktionieren (steht nachher einfach nichts drin?), aber du könntest mal versuchen, das Ganze mit sprintf o.ä. in den Buffer zu schreiben 🙂



  • Hallo netchamber,
    gibt getenv bei dir einen leeren String oder NULL zurück? Beim zweiten Fall liegt es laut MSDN daran, dass die Variable nicht gefunden wurde. Sollte eigendlich einwandfrei funktionieren.



  • Hallo!

    oops .. das ist peinlich und seltsam ..

    Nun ja. Ich hatte die stdlib.h nicht eingebunden .. 😕 Und als ich sie mittels

    #include <stdlib.h>
    

    eingebunden habe, bekam ich auch keine Fehlermeldung mehr. Mir ist jetzt dank http://msdn.microsoft.com/library/en-us/vccore98/HTML/_crt_getenv.2c_._wgetenv.asp?frame=true klar, dass ich, wenn ich getenv benutzen möchte, die stdlib includen muss.

    Aber woher kennt der Compiler denn die Funktion getenv, wenn ich nur die stdio.h eingebunden habe? Wieso bekomme ich keine Fehlermeldung wie z.B. "unbekannter Bezeichner" oder "unbekannte Funktion" ..?

    Trotzdem DANKE! Das Stichwort MSDN war gut ..


  • Mod

    netchamber schrieb:

    Aber woher kennt der Compiler denn die Funktion getenv, wenn ich nur die stdio.h eingebunden habe? Wieso bekomme ich keine Fehlermeldung wie z.B. "unbekannter Bezeichner" oder "unbekannte Funktion" ..?

    Vielleicht weil du in C programmierst und man dort keine Funktionsprototypen braucht (bzw. gebraucht hat)?


Anmelden zum Antworten