gpt4 book ai didi

c - 在处理数组时,您会在哪里添加 +1?

转载 作者:太空宇宙 更新时间:2023-11-04 06:56:23 25 4
gpt4 key购买 nike

由于数组从 0 而不是 1 开始,我想在我的代码中明确表示我将 1 添加到计数器 (i) 以弥补这一点。但是我的功能不是阅读我目前拥有的东西。

我对编码很陌生,所以很抱歉,但我会回答任何问题;

do
{
printf("\nMax # of characters?\n");
fflush(stdin);
scanf("%d", &x);
} while (x < 1 || x > 200);

do
{

printf("\nEnter Text:\n");

enter[i] = getchar();
i = 1;
error = 0;

do
{
printf("i = %d\n", (i - 1));
c = getchar();
enter[i] = c;
i++;
} while (c != '\n');

if (i > (x + 1)) //<----------- Even though I added one because arrays start at [0]
{ // the program still tells me 'i' (counter) is one
// more than it should be

printf("Words must not be longer than %d letters\n", x);

printf("You entered %d letters\n", (i - 1)); // -1 to count for the '\n'
error = 1;
}

} while (error != 0);


printf("\nOutput: %s\n", enter);

return 0;

最佳答案

首先你忘了初始化i。第一个

enter[i] = getchar();

是未定义的行为。

其次,i 是数组的索引。如果 x 是允许输入的字符数,则 i 的范围应在 0x - 1 之间> 包括合法字符。您还为 \n 增加了 i,因此合法地 i

约束
0 <= i <= x

所以如果 i > x 而不是 i > x + 1

应该打印你的错误信息

脚注:如果您想知道为什么我们从 0 开始索引,而任何告诉您我们应该从 1 开始索引的人都是错误的,那么我只能向您指出权威论文 Why Numbering Should start at Zero埃德斯加·迪克斯特拉 (Edsgar Dijkstra) 着。

关于c - 在处理数组时,您会在哪里添加 +1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43915923/

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