由于数组从零而不是一开始,我想在我的代码中明确表示我要在计数器(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;
答案 0 :(得分:3)
首先,您忘记初始化def get_serializer(self):
return ActivateCustomerSerializer()
。第一个
i
是未定义的行为。
其次,enter[i] = getchar();
是数组的索引。如果i
是您允许输入的字符数,则x
的合法字符应在i
和0
之间。您还为x - 1
增加了i
,因此合法\n
受到
i
因此,如果0 <= i <= x
不是i > x
脚注:如果你想知道为什么我们从零开始索引,而且任何告诉你我们应该从一个索引的人都是错的,那么我只能指出Edsgar Dijkstra的最终论文Why Numbering Should start at Zero。