我正在做一项练习,其中一个字符指针数组被用作存储单词的方式。我不明白为什么我不能在主函数中使用'strcpy'将单词“hoi”复制到数组的第二个元素中。当我编译代码时,在CodeBlocks中会收到“程序已停止工作”的消息。
'numberOfWordsInDict'和'printDict'函数正常工作。
提前感谢。
'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;
}
dict[1]
指向字符串字面量的第一个字符。修改字符串字面量,例如strcpy(dict[1], newWord1)
,会产生未定义的行为。 - Peter