用scanf_s判断输入数据是否合法
Posted Adalight
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用scanf_s判断输入数据是否合法相关的知识,希望对你有一定的参考价值。
用scanf_s判断输入数据是否合法
对用户输入的整数进行求和。当用户输入任意字符时,结束程序并打印结果。
A. 用户可以输入整数和浮点数
B. 用户可以在同一行输入多个数字,数字之间可以是任意一个分隔符(如下图)
C. 结果保留两位小数
答:要求 A 不难实现,统一将用户输入的数转换为浮点型即可(整数到浮点型的转换是无损的);要求 B 则需要我们检测用户是输入了数字之后是否按下了回车(检测是否存在换行符)。因此,我们需要嵌套一个内循环来处理那些一行包含多组数字的情况。
代码实现:
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
float num = 0;
double sum = 0;
int status;
do
{
cout << "请输入合法的数字:";
do
{
sum += num;
status = scanf_s("%f", &num);
}
while (getchar() != \'\\n\'&& status == 1);
}
while (status == 1);
cout << "结果是:" << sum << endl;
system("pause");
return 0;
}
scanf_s函数会返回成功接收字符的个数,所以我们只需检查每次调用 scanf_s函数的返回值是否为 1 即可。
以上是关于用scanf_s判断输入数据是否合法的主要内容,如果未能解决你的问题,请参考以下文章