gpt4 book ai didi

c - 在 C 中打印字符串数组时出错

转载 作者:太空宇宙 更新时间:2023-11-04 05:13:03 24 4
gpt4 key购买 nike

我有一个简单的程序来输入 5 个字符串的数组并输出它们。但是输出有些奇怪。以下是我的代码。

#include <stdio.h>

int main()
{
char a[10][5];
int i;
for(i=0; i<5; ++i)
{
printf("\nEnter the name of %d st student:", i+1);
fflush(stdout);
gets(a[i]);
}
for(i=0; i<5; ++i)
{
printf("\n%s", a[i]);
fflush(stdout);
}
return 0;
}

我输入了 tom、john、peter、david 和 alan,得到了以下输出。

tom
john
peterdavidalan
davidalan
alan

可能是什么问题?

最佳答案

C 数组语法在我看来非常令人困惑 - 它的意思与我通常阅读它的方式相反......而且看起来你也犯了那个错误。

您的数组有十个字符串槽,每个槽有 4 个字符(不是 5 个,因为 C 中的每个字符串必须以 0 字符结尾)。因此,当您输入 peter 时,它并没有完全适合 10 个字符的缓冲区,而是溢出了 5 个字符的缓冲区,保存了之前保存的一个字符。

没有 0 终止符,printf 将继续运行,因此也写入其他名称。

关于c - 在 C 中打印字符串数组时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24970945/

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