[英]How to copy the string into the array of strings with strcpy?
我正在嘗試將一個字符串復制到一個字符串數組中,但是它不起作用。 我知道這是由於內存分配引起的問題,但是由於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()
插入它會導致未定義的行為 。
編輯關於您的編輯,我無法重現問題。 當我在您的最新代碼中添加以下內容時:
for (i = 0; i < NUMBER_OF_STRINGS; i++) {
printf("%d:[%s]\n", i, message_ecran[i]);
}
它打印出來
0:[CVC]
1:[iiiiiiiii]
2:[iiiiiiiii]
該代碼在行超出數組的界限時具有未定義的行為:
for (i=0;i<=NUMBER_OF_STRINGS;i++)
因為數組索引是從零開始的,並且從0
到N - 1
,其中N
是數組中元素的數量。 這意味着message_ecran
的有效數組索引僅為0
和1
,但是2
將用作for
循環中的索引。 改成:
for (i=0;i<NUMBER_OF_STRINGS;i++)
此外,您可以從1開始循環
for (i = 1; i < NUMBER_OF_STRINGS; i++)
因為您稍后將在第零個位置分配“ texte3”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.