sprintf mit %s bringt programm zum absturz



  • Hallo zusammen,

    ich bin Anfänger in C++ und stehe grade vor einem Problemchen.
    Ich verwende in meinem Programm ein String mit dem namen "file"
    und lasse dann vom User einen Dateinamen bestimmen.
    Danach tritt dann das Problem auf und zwar in dieser Zeile:
    sprintf(buffer, "GET %s", file);

    Hier noch einmal der Code:

    std::string file;
    std::cout << "Bitte Dateinamen angeben: ";
    std::cin >> file;
    char buffer[8192];
    sprintf(buffer, "GET %s", file);
    

    Ich denke einfach mal das Problem liegt daran, dass die Variable buffer von einem anderen Typ ist wie die Variable file, aber wie behebe ich nun das Problem?

    Gruß, Thomas



  • Dieser Thread wurde von Moderator/in Unix-Tom aus dem Forum MFC (Visual C++) in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Du kannst natürlich keine C-Funktion (sprintf) mit einem C++-String verwenden. Also entweder den C++-String in einen C-String umwandeln:

    std::string file; 
    std::cout << "Bitte Dateinamen angeben: "; 
    std::cin >> file; 
    char buffer[8192]; 
    sprintf(buffer, "GET %s", file.c_str());
    

    Oder gleich vollständig C++

    std::string file; 
    std::cout << "Bitte Dateinamen angeben: "; 
    std::cin >> file; 
    std::stringstream buffer;
    buffer << "GET " << file;
    

    Wenn du dann den C++-String brauchst must du dir diesen mit buffer.str(); holen



  • Hier stand Müll,weil nicht richtig gelesen -.-
    Sorry.
    rya.



  • buffer ist ja ein std::stringstream, kein std::string.

    EDIT: Dies bzog sich auf Scorchers Müll 😉


Anmelden zum Antworten