gpt4 book ai didi

c - 字符串数组在 C 中不断打印最后一个条目

转载 作者:行者123 更新时间:2023-11-30 14:25:56 25 4
gpt4 key购买 nike

我不太明白为什么当我运行代码,输入 5 个不同的字符串时,它会打印 string[0] 作为我输入的最后一个字符串:

例如,如果我输入:

是的
没有

它会打印:


检查是
是的
是的
检查否
没有
没有

即使索引=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...等等

最佳答案

这一行:

     string[j] = entered;

不会将输入中的字符复制到string[j];相反,它将 string[j] 设置为指向 entered 数组的内存位置。

您需要为 string 数组中的字符串分配内存,方法是编写(例如):

char string[5][11];

而不是

char *string[5];

然后您需要通过编写(例如)从string[j]复制entered中的字符(例如):

     strcmp(string[j], entered);

关于c - 字符串数组在 C 中不断打印最后一个条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9848781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com