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) 起啥作用