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 surmessage
étant un pointeur, quand c'est vraiment un tableau (méthode I). - Votre troisième
message
méthode est 100wchar_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 leswcscmp()
,wcscpy()
, et d'autreswchar_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
Vous devez vous connecter pour publier un commentaire.
Cela dépend vraiment de ce que vous voulez faire et comment vous utilisez les données. Si vous en avez besoin à l'échelle mondiale, par tous les moyens, de définir un tableau statique. Si vous avez seulement besoin d'elle dans une méthode, de faire de même dans la méthode. Si vous souhaitez transmettre les données entre les fonctions, sur une plus longue durée de vie,
malloc
la mémoire et l'utiliser.Cependant, votre méthode III est mal - c'est un tableau de 100
wchar_t
pointeurs. Si vous souhaitez créer un 100 grandeswchar_t
tableau et un pointeur, vous devez utiliser:Aussi, concernant la terminologie: vous n'êtes déclarant une variable dans la méthode, vous ne jamais céder quoi que ce soit.
La magie est la
L
: