C语言scanf函数的返回值scanf函数的安全版在while条件中使用scanf函数

Posted bcbobo21cn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言scanf函数的返回值scanf函数的安全版在while条件中使用scanf函数相关的知识,希望对你有一定的参考价值。

scanf函数的返回值,是正确读取的项数;读入一个数,返回1,读入2个数,则返回2,如此;

VC2012,先做一个测试程序;

提示出错;

error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead.

改为使用scanf_s;

int _tmain(int argc, _TCHAR* argv[])

	int a, b, c;
	int ret;

	ret = scanf_s("%d",&c);
	printf("ret = %d\\n",ret);
	ret = scanf_s("%d %d",&a,&b);
	printf("ret = %d\\n",ret);

	return 0;

输出scanf的返回值看一下;

有的情况用到类似如下写法;

while(scanf_s("%d",&n)==1)

......

    一直让用户输入数据,输入合法就一直循环处理;

写个简单例子跑一下;

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])

	int n;

	while(scanf_s("%d",&n)==1)
		printf("您输入了:%d\\n", n);
	

	return 0;

运行如下;

    如果输入合法的整数,就一直循环;当输入 f 时,scanf读取错误,没有返回1,退出循环;

 如果scanf中%d是连着写的如“%d%d%d”,在输入数据时,数据之间不可以用逗号分隔,只能用空白字符(空格或tab键或者回车键)分隔——“2 (空格)3(tab) 4” 或 “2(tab)3(回车)4”等;若是“%d,%d,%d”,则在输入数据时需要加“,”,如“2,3,4”;

以上是关于C语言scanf函数的返回值scanf函数的安全版在while条件中使用scanf函数的主要内容,如果未能解决你的问题,请参考以下文章

c语言 while(scanf("%d", &num) == 1) 起啥作用

c++ scanf函数问题

vs2022scanf函数的使用,使用scanf的报错-返回值被忽略:解决·方法

c语言 定义一个有返回值 无参数的函数

C语言中如何实现多组数据输入输出?

一个经常被忽略的c语言问题