我正在尝试将一个字符串复制到一个字符串数组中,但是它不起作用。我知道这是由于内存分配引起的问题,但是由于STRING_LENGTH是一个常量,因此我不知道如何使它工作。
#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);
代码后的message_ecran值:
"CVC"
null
"iiiiiiiii"
期望值
"CVC"
"iiiiiiiii"
"iiiiiiiii"
最佳答案
一个问题是,您在以下循环中超出了message_ecran
的末尾:
for (i=0;i<=NUMBER_OF_STRINGS;i++)
由于
message_ecran[NUMBER_OF_STRINGS]
超出范围,因此尝试将strcpy()
放入它会导致undefined behaviour。编辑关于您的编辑,我无法重现该问题。当我将以下内容添加到您的最新代码中时:
for (i = 0; i < NUMBER_OF_STRINGS; i++) {
printf("%d:[%s]\n", i, message_ecran[i]);
}
它打印出来
0:[CVC]
1:[iiiiiiiii]
2:[iiiiiiiii]