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.

Sie haben keine code initialisiert den string, so können wir nicht wirklich helfen, außer zu sagen, dass die Methode III ist falsch. Können Sie die Initialisierungen in der neben der Variablen-Deklaration? Außerdem, Sie müssen nicht umgewandelt den Rückgabewert von 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

Schreibe einen Kommentar