Welche Methode ist die richtige für die Initialisierung einer wchar_t-string?
Ich Schreibe ein Programm und ich brauche die Initialisierung eines message-Puffer, hält text. Ich bin in der Lage, damit es funktioniert, aber ich Schreibe unter verschiedenen Arten zur Initialisierung der strings in C, und ich möchte, um den Unterschied zu verstehen. Auch, das ist die am besten geeignete Methode für die Initialisierung einer wchar_t - /char-string?
Methode I:
wchar_t message[100];
basiert auf meinem Verständnis, dies reserviert einen Speicherplatz von 200 bytes (ich glaube, die Größe von wchar_t ist 2 bytes, die auf Windows OS). Diese Speicherreservierung ist statisch und es wird vergeben werden innerhalb der .data-Abschnitt der ausführbaren Datei zum Zeitpunkt der Erstellung.
Nachricht ist auch eine Speicher-Adresse selbst, verweist auf das erste Zeichen der Zeichenfolge.
Diese Methode initialisiert ein string funktioniert gut für mich.
Methode II:
wchar_t *message;
message=(wchar_t *) malloc(sizeof(wchar_t) * 100);
Dieser Methode wird zuerst initialisieren Sie die variable Meldung als Zeiger auf wchar_t. Es ist ein array von wide-Zeichen.
weiter, es wird die dynamische Zuordnung von Speicher für diese Zeichenfolge. Ich denke, dass ich geschrieben habe die syntax richtig.
Wenn ich diese Methode in meinem Programm, es liest nicht den text nach dem Leerzeichen in einem string.
Example text: "This is a message"
Wird es nur-Lesen "Dieses" in die variable Nachricht und kein text danach.
Methode III:
wchar_t *message[100];
Diese definieren Nachricht als eine Reihe von 100-wide-Zeichen und einen Zeiger auf wchar_t. Diese Methode der Initialisierung der Nachricht funktioniert gut. Allerdings bin ich mir nicht sicher, ob dies der richtige Weg ist. Weil die Meldung an sich weist auf das erste Zeichen in der Zeichenfolge. So, initialisieren es mit der Größe, ist es richtig?
Ich wollte verstehen, es in mehr Tiefe, den richtigen Weg der Initialisierung einer Zeichenkette. Das gleiche Konzept kann erweitert werden, um einen string von Zeichen als gut.
malloc
in C (Methode II), und Sie machen ein bisschen eine wackelige Aussage über message
wird ein Zeiger ist, wenn es wirklich ein array (Methode I).Ihre Dritte
message
Methode ist 100 wchar_t
Zeiger. Nicht sicher, wenn das ist Ihre Absicht, aber Ihre Beschreibung folgt es eindeutig nicht mit dieser Erklärung. Ebenso wäre es wahrscheinlich zu tun gut, zu verstehen, die wcscmp()
, wcscpy()
und andere wchar_t
Funktion der Familie. Es gibt keine Magie hier.Möglich, Duplikat der stackoverflow.com/questions/3112407/wchar-t-pointer
InformationsquelleAutor Neon Flash | 2013-04-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es hängt wirklich davon ab, was Sie tun möchten und wie Sie die Daten verwenden. Wenn Sie es brauchen-weltweit, mit allen Mitteln, definieren Sie eine statische array. Wenn Sie nur brauchen, es in eine Methode, das gleiche zu tun in der Methode. Wenn Sie möchten, übergeben Sie die Daten um zwischen den Funktionen, die über eine längere Lebensdauer,
malloc
dem Speicher und verwenden.Aber, Ihre Methode III ist falsch - es ist ein array von 100
wchar_t
Zeiger. Wenn Sie möchten, erstellen Sie eine 100 großewchar_t
array und einen Zeiger, die Sie verwenden müssen:Auch bezüglich der Terminologie: Sie sind nur deklarieren eine variable in der Methode, die ich Ihnen niemals vergeben nichts ein.
InformationsquelleAutor Femaref
Ist die Magie der
L
:InformationsquelleAutor alk