首页 > 解决方案 > 如何使用scanf在单行中获取由空格分隔的未指定数量的输入?

问题描述

我希望能够取一行多个整数,任何不同的值,用空格分隔,并将它们转换为以下类似图形的输出。整数值的数量未指定

In: 1 2 3
Out: 
1 | *
2 | **
3 | ***

或者

In: 12 16 18 4 17
Out:
12 | ************
16 | ****************
18 | ******************
4  | ****
17 | *****************

标签: c

解决方案


我完全不明白为什么你觉得有必要“在一行中”获取所有输入。如果您想以不同于空格的方式处理换行符,scanf 如果可能是错误的工具。但是您可以执行以下操作:

#include<stdio.h>
int
main(void)
{
        int i;
        while( scanf("%d", &i) == 1 ){
                int t;
                printf("%d\t| ", i);
                while( i-- > 0 ){
                        putchar('*');
                }
                putchar('\n');
                if( (t = getchar()) == '\n' || t == EOF ){
                        break;
                }
                ungetc(t, stdin);
        }
        return 0;
}

但似乎应该简单地省略寻找换行符的所有愚蠢逻辑。


推荐阅读