Comment faire pour copier la chaîne de caractères dans le tableau de chaînes de caractères avec la fonction strcpy?
Je suis en train de copier une chaîne dans un tableau de chaînes de caractères, mais il ne fonctionne pas. Je sais que c'est du à un problème d'allocation de mémoire, mais je ne vois pas comment je pourrais le faire fonctionner comme STRING_LENGTH est une constante.
#define NUMBER_OF_STRINGS 3
#define STRING_LENGTH 255
char message_ecran[NUMBER_OF_STRINGS][STRING_LENGTH];
int i;
char texte3[] = "CVC";
char texte7[] = "iiiiiiiii";
for (i=0;i<=NUMBER_OF_STRINGS;i++)
{
strcpy(message_ecran[i], texte7);
}
strcpy(message_ecran[0], texte3);
Valeurs de message_ecran après le code:
"CVC"
null
"iiiiiiiii"
valeurs attendues
"CVC"
"iiiiiiiii"
"iiiiiiiii"
- il ne fonctionne pas => cf modifier
- Comment êtes-vous de vérifier les valeurs de
message_ecran
? - Aussi, vous ne devez pas modifier la question en réponse à des corrections fournies dans les réponses. Cela rend confus pour toute personne venant à la question plus tard.
Vous devez vous connecter pour publier un commentaire.
Un problème, c'est que vous exécuter après la fin de
message_ecran
dans la boucle suivante:Depuis
message_ecran[NUMBER_OF_STRINGS]
est hors des limites du terrain, la tentative destrcpy()
en il en résulte comportement indéfini.modifier en ce qui concerne votre travail d'édition, je ne peux pas reproduire le problème. Quand j'ai ajouter les lignes suivantes à votre dernier code:
il imprime
Le code a un comportement indéterminé comme il l'accès au-delà des limites du tableau à cette ligne:
que les indices de tableau sont basés sur zéro, et de l'exécuter à partir de
0
àN - 1
oùN
est le nombre d'éléments dans le tableau. Cela signifie que l'valide les indices de tableau pourmessage_ecran
sont0
et1
seulement, mais2
sera utilisé comme un index dans lafor
boucle. Changement:En outre, vous pouvez démarrer votre boucle à partir de 1 ie
puisque vous êtes plus tard attribuer des "texte3" au zéro emplacement.