2016-11-10 84 views
0

因此,通过这几行代码,我希望将输入存储到数组中,直到写入点('。')。但是,当实际写入点没有任何反应时,它只是让我提出另一个输入。do..while循环 - 遇到条件时不会中断

#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

看起来你在向数组中添加最后一个值之后正在递增i,所以while条件将始终查看数组中的下一个(尚未存储的)值,而不是最后一个插入的值? –

回答

1

你检查前递增我,所以在这个位置的值是不是你读出的字符,但接下来的(所以无论是在阵列中)。

2

在do..while循环中,在评估while条件之前执行do代码块。这就是整个问题。

您正在填补array[i]用浏览的字符,然后通过增加i您评估array[i+1]就好像它是输入,这实际上是在array[i]

您可能希望将其换为正常循环。

当调试这种事情时,您希望从双重检查开始,如果您认为正在满足的条件得到满足(例如通过调试打印条件值)。您可以通过在do块的最后一行打印array[i]来完成此操作。