La méthode est correcte pour l'Initialisation d'un wchar_t chaîne?

Je suis en train d'écrire un programme et j'ai besoin d'initialiser un message de mémoire tampon qui va contenir le texte. Je suis capable de le faire fonctionner, cependant, je suis en train d'écrire ci-dessous les différents moyens utilisés pour initialiser les chaînes de caractères en C et je veux comprendre la différence. Aussi, ce qui est la méthode la plus appropriée pour l'initialisation d'un wchar_t/chaîne de char?

Méthode I:

wchar_t message[100];

basé sur ma connaissance, cela permettra d'allouer un espace mémoire de 200 octets (je pense que la taille de wchar_t est de 2 octets sur le système d'exploitation Windows). Cette allocation de mémoire est statique et il sera attribué à l'intérieur de l' .les données de la section de l'exécutable au moment de la compilation.

message est également une adresse de mémoire elle-même qui pointe vers le premier caractère de la chaîne.

Cette méthode d'initialisation d'une chaîne fonctionne bien pour moi.

Méthode II:

wchar_t *message;
message=(wchar_t *) malloc(sizeof(wchar_t) * 100);

Cette méthode sera d'abord initialiser la variable message comme un pointeur vers wchar_t. C'est un tableau de caractères larges.

prochaine, il va allouer dynamiquement de la mémoire pour cette chaîne. Je pense que j'ai écrit la syntaxe pour correctement.

Lorsque j'utilise cette méthode dans mon programme, il ne lit pas le texte après l'espace dans une chaîne de caractères.

Example text: "This is a message"

Il est en lecture seule "Ce" dans la variable message et pas de texte après.

Méthode III:

wchar_t *message[100];

Cela permettra de définir le message comme un tableau de 100 caractères larges et un pointeur vers wchar_t. Cette méthode d'initialisation de message fonctionne bien. Cependant, je ne suis pas sûr si c'est la bonne façon. Parce que le message en lui-même pointe vers le premier caractère dans la chaîne. Ainsi, l'initialiser avec la taille, est-il correct?

Je voulais la comprendre plus en profondeur, à la manière correcte de l'initialisation d'une chaîne de caractères. Ce même concept peut être étendu à une chaîne de caractères.

  • Vous avez montré aucun code qui initialise la chaîne, de sorte que nous ne pouvons pas vraiment vous aider, sauf pour dire que la méthode III est faux. Pouvez-vous montrer les initialisations outre les déclarations de variables? En outre, vous n'avez pas besoin de jeter la valeur de retour de malloc dans C (méthode II) et de vous faire un peu fragile déclaration sur message étant un pointeur, quand c'est vraiment un tableau (méthode I).
  • Votre troisième message méthode est 100 wchar_t pointeurs. Pas sûr si c'est votre intention, mais votre description suivante, il ne correspond à cette déclaration. De même, il serait probablement vous faire bien comprendre les wcscmp(), wcscpy(), et d'autres wchar_t fonction des membres de la famille. Il n'y a pas de magie ici.
  • Double Possible de stackoverflow.com/questions/3112407/wchar-t-pointer
InformationsquelleAutor Neon Flash | 2013-04-11