当while循环中的条件涉及一个在循环中获取值的变量时,我应该使用哪个循环?

时间:2013-02-20 17:22:38

标签: c loops

我想知道如何在变量时使用use循环。如果stdin来自文件,它应该循环直到遇到'*'。只要它获得它应该迭代的价值。

    while(a!='*')
   {
         scanf("%d",&a);
         ...
           ....
          ....
         ....

      }

3 个答案:

答案 0 :(得分:2)

如果您想立即终止,请阅读'*'

for (;;) {
    scanf("%d", &a);
    if (a == '*') {
        break;
    }
    ....
}

或者,如果'*'是您应该处理的最后一个值,则可以使用

do {
    scanf("%d", &a);
    ....
} while (a != '*');

请注意,我已经接受了WhozCraig和Armin的建议,并更改了您的scanf行以传递a的地址。如果a已经是指针类型,则应该更改比较以取消引用它 - 例如*a == '*'。 (在后一种情况下,您还需要确保已分配指向的内存a。)

答案 1 :(得分:2)

怎么样:

char a;
while (scanf("%c", &a) == 1 && a != '*')
{
}

将格式说明符更改为%c,在a的地址中传递并检查scanf()的返回值,以确保读取有效的char

答案 2 :(得分:0)

也许你想在while循环中使用do {}。