Probleme mit wchar_t sprintf
War ich lernen, wie man wchar, aber ich bin nicht zu kopieren der char mit snprintf().
Ich möchte, um den text zu kopieren, von a nach b, aber es nie druckt den Wert. Was mache ich falsch?
Und ich will snprintf und sonst nichts.
#include <wchar.h>
#include <stdio.h>
void main() {
printf("Start\n");
wchar_t a[12];
wchar_t b[] = L"984567";
snprintf(a, sizeof(a), "%ls\0", b);
printf("%ls\n", a);
printf("%ls\n", b);
printf("end\n");
}
//Ausgabe
Start
984567
Ende
snprintf()
schreibt einen char-buffer. Sie müssen wsnprintf()
. (Oh, und machen Sie eine compiler-Warnung.)wsnprintf
?es ist nicht standard, aber eine gemeinsame Erweiterung. es läuft durch verschiedene andere Namen, wie
snwprintf()
.InformationsquelleAutor chettyharish | 2014-01-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für ein array
T arr[10]
,sizeof arr
gibt die Anzahl der bytes belegt, die von den array (dh.sizeof(T) * 10
in diesem Fall.) Allerdingsswprintf
erwartet, dass die Zahl derwchar_t
in den Zielpuffer als zweites argument.Dem unter-test-code zeigt, wie die Kanarischen Werte werden zerstört, wenn Sie einfach verwenden
sizeof a
und die Quellewchar_t
string länger ist als der Ziel -wchar_t
Puffer.InformationsquelleAutor nodakai
snprintf
ist für das schreiben zuchar
Puffer. Schreiben Sie einewchar_t
Puffer, müssen Sieswprintf
statt.InformationsquelleAutor Chris Dodd
Verwenden swprintf.
Ausgabe:
984567
%ls
? Er druckt einewchar_t
Puffer...Sorry, mein Fehler. Bearbeitet
Dies bewirkt eine nur print '9' und nicht der gesamte Wert von b
InformationsquelleAutor Mustafa Chelik