c - 如何使用scanf在单行中获取由空格分隔的未指定数量的输入?
问题描述
我希望能够取一行多个整数,任何不同的值,用空格分隔,并将它们转换为以下类似图形的输出。整数值的数量未指定
In: 1 2 3
Out:
1 | *
2 | **
3 | ***
或者
In: 12 16 18 4 17
Out:
12 | ************
16 | ****************
18 | ******************
4 | ****
17 | *****************
解决方案
我完全不明白为什么你觉得有必要“在一行中”获取所有输入。如果您想以不同于空格的方式处理换行符,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;
}
但似乎应该简单地省略寻找换行符的所有愚蠢逻辑。
推荐阅读
- unity3d - 如何测量一些预制件范围?
- oracle - OSB 11g 安装在检查操作系统认证和检查服务包时失败
- java - 如何在自动完成位置googlemap api中绑定(仅特定位置)
- css - 为什么 Lighthouse 考虑 clip: rect(0 0 0 0) 作为可访问性的有效解决方案
- spring - Spring Boot/Spring Kafka 中的 KafkaTemplate 抛出 NullPointerException
- python - 并行/多处理运行大型 python 脚本
- sql - 外键指的是同一张表的主键列
- terraform - 使用 terraform 创建跨帐户角色时出现错误错误:要求用户输入时出错:无法解析变量 policy_arns 的值
- python - 想要从 groovy 脚本执行 python 代码
- rest - 为什么 symfony FOSRest 包找不到合适的控制器?