繁体   English   中英

我的“ scanf”循环没有停止; 当条件不起作用时

[英]My 'scanf' loop doesn't stop; while condition is not working

我应该做这个练习:用C编写一个程序在屏幕上打印一个频率图表。 输入和输出:程序将三元组序列(数字,频率,字符)作为输入。 对于每个序列,它应打印一个斜线,生成一个图形,如下例所示。

输入示例

(5,12, -) (4,17, -) (2,1, -) (1,19, +)

该程序应打印

  5 | ------------ 12
  4 | ----------------- 17
  2 | -
  1 | +++++++++++++++++++ 19

我意识到,如果我在scanf函数中的句子之前放置一个空格,它会很好地工作,但是该程序并不会在预期的时候结束

int main()
{
    int x, b, i, u;
    char n;

    do{
        u = scanf(" (%d,%d,%c)", &x, &b, &n);
        printf("%d |", x);
        for (i = 0; i < b; i++){
            printf("%c", n);
        }
        printf(" %d\n", b);
    }while(u == 3);
}

可以预期的是,当scanf不能读取它应该读取的3件事时,while循环结束并且程序结束。 但是,当发生这种情况时,他仍在等待新的输入。 我该如何解决?

只需检查u的返回值,然后使用if条件。 该shold停止while循环并退出程序

int main()
{
int x, b, i, u;
char n;


do{
    u = scanf(" (%d,%d,%c)", &x, &b, &n);
    if(u == 3){
        printf("%d |", x);
        for (i = 0; i < b; i++){
            printf("%c", n);
        }
        printf(" %d\n", b);
    }

}while(u == 3);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM