我正在做一個練習,其中一個字符指針數組作爲存儲單詞的一種方式。我不明白爲什麼我不能使用'strcpy'將單詞'hoi'複製到主函數中數組的第二個元素。當我編譯代碼時,我在CodeBlocks中收到'程序已停止工作'的消息。不能從C中的strcpy指針數組中複製字符串?
函數'numberOfWordsInDict'和'printDict'正常工作。
在此先感謝。
int numberOfWordsInDict(char **dict)
{
int i, cnt = 0;
for(i = 0; i < 10; i++)
{
if(dict[i] != NULL)
{
cnt++;
}
}
return cnt;
}
void printDict(char **dict)
{
int i = 0;
printf("Dictionary:\n");
if(numberOfWordsInDict(dict) == 0)
{
printf("The dictionary is empty.\n");
} else
{
for(i = 0; i < 10; i++)
{
printf("- %s\n", dict[i]);
}
}
}
int main()
{
char *dict[10] = {
"aap", "bro ", "jojo", "koe", "kip",
"haha", "hond", " drop", NULL,NULL};
char *newWord1 = "hoi";
printDict(dict);
strcpy(dict[1], newWord1);
printDict(dict);
return 0;
}
'快譯通[1]'指向一個字符串的第一個字符。修改'strcpy(dict [1],newWord1)'這樣的字符串文字會導致未定義的行爲。 – Peter
非常感謝大家! –
這是一個令人難以置信的常見問題。如果您在「字符串」下面查看[Stack Overflow C FAQ](https://stackoverflow.com/tags/c/info),有幾個規範的帖子可用於進一步閱讀/重複關閉。 – Lundin