用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判断输入数据是否合法的主要内容,如果未能解决你的问题,请参考以下文章

谁有C语言判断电话号码的合法性的源代码

用集合的方法判断密码是否合法

检测表单是否合法,为什么不能用n++的探讨

如何判定括号合法性

c语言中如何判断输入的是不是数字?

python实现判断变量名是否合法