c - 使用 scanf 返回值验证输入类型失败
问题描述
我想通过使用scanf的返回值检查c中此代码中的所有输入是否都是double类型:
#include <stdio.h>
int main()
{
double a,b,c;
int x = scanf("%lf %lf %lf", &a, &b, &c);
printf("%d", x);
}
但这就是我得到的:
解决方案
scanf
一旦任何转换失败,就停止处理输入,从左到右,它不会尝试处理剩余的输入。
所以当你进入
b b 2.8
尝试进行第一次%lf
转换时失败。由于没有进行任何转换,它返回0
.
当你进入
2 x 2.1
它成功转换2
为 a double
,但失败了x
,所以它不处理2.1
并返回1
。
推荐阅读
- python - 为模糊逻辑关系组在 pandas 中分组数据
- c# - 通过脚本更改相机渲染器数据
- c++ - cpp排序中的比较器
- python - 在 Pandas 中按多列填充缺失的年份 groupy 并按顺序水平显示多列
- laravel - 有没有办法用 belongsToMany 构建 hasManyTrough?
- c++ - 从 COM 对象执行函数期间“无响应”
- c# - 导致 AccessViolationException 的图像 PixelFormat
- python - 书写识别的python代码问题
- database - 更新数据库中的列值的问题
- php - Doctrine 在 ManyToOne 关系中总是返回 NULL