我不太明白为什么当我运行代码时,输入5个不同的字符串,它会输出string [0]作为我输入的最后一个字符串:
例如,如果我输入:
是
没有
它会打印出来:
检查是的
是
是
检查否
没有
没有
甚至对于index = 0
int main(void) {
char *string[5];
char entered[11];
for(int j = 0; j < 5; j++) {
scanf("%s", &entered);
string[j] = entered;
printf("Check %s\n",entered);
printf("%s\n",string[j]);
printf("%s\n",string[0]);
}
return 0;
}
我的目的是将每个字符串条目保存到数组中。
因此,对于我的例子,我想:
检查是的
是
是
检查否
没有
是
我不允许使用malloc ......等。
答案 0 :(得分:2)
这一行:
string[j] = entered;
不会将字符从entered
复制到string[j]
;相反,它将string[j]
设置为指向entered
数组的内存位置。
您需要通过写(例如)来为string
数组中的字符串分配内存:
char string[5][11];
而不是
char *string[5];
然后你需要通过写(例如)来复制来自entered
的{{1}}中的字符:
string[j]