因此,使用这几行代码,我希望将输入存储到数组中,直到写入点('。')。但是当dot实际写入没有任何反应时,它只会让我输入另一个输入。
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
int main()
{
char array[MAX];
int i = 0;
do{
scanf("%c", &array[i]);
i++;
}while(array[i] != '.');
return 0;
}
答案 0 :(得分:2)
在do..while循环中,在评估while条件之前执行do块。这就是重点。
您正在使用扫描字符填充array[i]
,然后通过递增i
评估array[i+1]
,就好像它是输入一样,实际上是array[i]
。
你可能想把它换成正常的for循环。
在调试此类事情时,您希望首先检查是否实际满足您认为满足的条件,例如通过调试打印条件值。您可以通过在do块的最后一行打印array[i]
来完成此操作。
答案 1 :(得分:1)
你在检查前递增i,所以那个位置的值不是你读的字符,而是下一个(所以数组中的任何内容)。