Forum: Compiler & IDEs _snprintf funktionniert nicht


von Louisa (Gast)


Lesenswert?

Hallo zusammen,
ich habe ein Problem mit _snprintf. Wenn Message besteht aus '%' 
funktionniert nicht. Kann jemanden mir helfen diesen Fehler zu beheben?

char Buffer[1024] = "";
string Message ="hello%World";
_snprintf(Buffer, sizeof(Buffer), "%s", Message.c_str());

von Peter II (Gast)


Lesenswert?

Louisa schrieb:
> funktionniert nicht.

und was heist das? Geht das Licht aus, wird er Kühlschrank warm? Stürzt 
der PC ab?

von Louisa (Gast)


Lesenswert?

Sorry, das Programm wird abgestürzt.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

_snprintf ist keine Standardfunktion.

Du müsstest also schon noch dazu schreiben, welche
Bibliotheksimplementierung du hier benutzt.

von Roki (Gast)


Lesenswert?

Du musst das % escapen

string Message = "hello%%World";

von Peter II (Gast)


Lesenswert?

Roki schrieb:
> Du musst das % escapen

wo steht denn soetwas? Das kann ich mir kaum vorstellen.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Mit GCC unter Linux und sprintf anstelle von _sprintf funktioniert der 
Code perfekt.

_sprintf ist von Microsoft und eine Erweiterung zu C++98 (deswegen der 
Underscore). Da in C++11 snprintf standardmässig enthalten ist, solltest 
du den Underscore mal versuchsweise weglassen. Vielleicht gibt es ja 
einen semantischen Unterschied zwischen den beiden Funktionen.

Oder der eigentliche Fehler liegt ganz woanders im Programm. Dazu 
müsstest du mal ein komplettes, kompilierfähiges Programm posten.

Roki schrieb:
> Du musst das % escapen

Das ist nur in Formatstrings so. In gewöhnlichen Strings hat das 
Prozentzeichen keine besondere Bedeutung.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.