do..while循环 - 当条件满足时不破坏

时间:2016-11-10 22:49:36

标签: c arrays do-while break

因此,使用这几行代码,我希望将输入存储到数组中,直到写入点('。')。但是当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;
}

2 个答案:

答案 0 :(得分:2)

在do..while循环中,在评估while条件之前执行do块。这就是重点。

您正在使用扫描字符填充array[i],然后通过递增i评估array[i+1],就好像它是输入一样,实际上是array[i]

你可能想把它换成正常的for循环。

在调试此类事情时,您希望首先检查是否实际满足您认为满足的条件,例如通过调试打印条件值。您可以通过在do块的最后一行打印array[i]来完成此操作。

答案 1 :(得分:1)

你在检查前递增i,所以那个位置的值不是你读的字符,而是下一个(所以数组中的任何内容)。