scanf 函数在VS中的用法解释
- scanf函数和scanf_s函数
由于微软工作人员从函数安全性的考虑,在VS中弃用了scanf函数,之后创建了scanf_s函数来代替使用,所以在VS中,大多数时候我们还是使用scanf_s函数
其实不是说不可以使用scanf函数,只不过是预处理器会发出错误警告并停止编译,如果想要坚持使用scanf函数的话,可以在头文件定义
#define _CRT_SECURE_NO_WARNINGS
或者在C\C++预处理器中加入语句_CRT_SECURE_NO_WARNINGS
- 一些关于scanf的说明
如果要读入一个整型数据,有
scanf("%d",&a);
如果要读入多个整型,有
scanf("%d%d",&m,&n);
scanf("%d %d",&m,&n);//输入时两个数之间必须用空格或换行隔开从而分别读入
scanf("%d" "%d",&m,&n);//以上三种表示等价,scanf读取整型处理时会忽略空格
scanf("%d,%d",&m,&n);//输入格式必须为 m,n 如 12,12 逗号可以换成其他符号如反斜杠等
scanf("%d","%d",&m,&n);//此输入格式会报错,不要使用
如果要读入一个字符,有
scanf("%c",&m)`;//scanf函数会将读入的字符转化成assci码
如果要读入多个字符
scanf("%c%c",%m,%n);//输入格式必须为mn
scanf("%c %c",&m,&n);//输入格式必须为m n
scanf("%c""%c",&m,%n);
scanf("%c" "%c",&m,&n);//上面两种格式等价,注意如果输入a b,只会读入a和空格,忽略b
scanf("%c,%c",&m,&n);//输入格式必须为m,n
scanf("%c","%c",&m,&n);//此输入格式会报错,不要使用
如果要读入一个字符串
scanf("%s",array);
如果要读入多个字符串
scanf("%s %s",array1,array2);
同时scanf支持多种不同格式的读入同时进行
scanf("%d/%s/%d",&month,name,&year);//当然也可以没有反斜杠
也可以在scanf中加入一些限制条件使得读入特定格式数据
如[、]、
此处不赘述
scanf有返回值,返回值是成功读入的参数的个数
- 有关scanf_s的说明
读入整形的方式与上面scanf相同
如果要读入一个字符
scanf_s("%c",&m)//相当于一次getchar
如果要读入多个字符
scanf_s("%c%c",%m,%n);
scanf_s("%c %c",&m,&n);
scanf_s("%c""%c",&m,%n);
scanf_s("%c" "%c",&m,&n);
scanf_s("%c,%c",&m,&n);
scanf_s("%c","%c",&m,&n);
上面的办法都无法读入
有可能是我的办法不对,改日再说
此处贴一个链接
如果要读入一个字符串
scanf_s为了防止越界,必须输入需要获取的字符串的长度
scanf_s("%s",array,length);
scanf_s也支持不同类型的数据的输入,不过我现在也不是特别清楚,日后搞明白再写
事实证明,这些函数格式输入错误会导致各种各样的错误,必须提前明白如何输入及其格式究竟是怎样的