scanf() 与 scanf_s() 的区别
scanf() 函数 :
scanf() 函数是格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。
其调用格式为:scanf("<格式化字符串>",<地址表>)。
scanf_s()函数:
scanf_s() 的功能虽然与scanf() 相同,但却比 scanf() 安全,因为 scanf_s() 是针对“ scanf()在读取字符串时不检查边界,可能会造成内存泄露”这个问题设计的。
scanf_s()用于读取字符串时,必须提供一个数字以表明最多读取多少位字符,以防止溢出。
实例:(统计输入字符串中原因字母出现的个数)(调试环境:visual studio 2010 C++)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<CountVowel.h>
int CountVowel(char str[])
{
int counter = 0;
int i;
for (i = 0; str[i] != '\0' ; ++i )
{ switch(str[i])
{ case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
case 'A':
case 'E':
case 'I':
case 'O':
case 'U':
++counter;
}
}
return counter;
}
void main()
{
char buffer[128];
printf("Please input a string:\n");
scanf_s("%s" , buffer,128); /* 这里必须要有128,以表明最多读取128个字符,如果写成scanf_s("%s",buffer),程序将无法执行到底,且编译器会提示“Unhandled exception at 0xfefefefe in array.exe:0xC0000005: Access tion.” 。当然在安全性要求不高的情况下,不 一定非要用scanf_s()函数,可用scanf("%s",buffer)代替。 */
printf("%d vowels appear in your string.\n",CountVowel(buffer));
system("pause");
}
初学C语言,把一些心得记录下来,以供自己以后参考。
scanf() 与 scanf_s() 的区别相关推荐
- 浅谈scanf和scanf_s的区别,以及应对VS返回值被忽略的报错问题。
文章目录 前言 一.scanf和scanf_s是什么? 二.分别分析 1.scanf 2.scanf_s 3其实scanf和scanf_s在使用时只会在vs中有不同. 前言 随着IT行业的火爆,不少初 ...
- scanf与scanf_s的区别
自从用VisualStudio2015之后就不愿再去使用Visual C++6.0了,但是最近在学数据结构图时,总是在字符的连续输入遇到困惑. 使用VS都知道,要用scanf_s对键盘读入数据. sc ...
- <C语言学习>scanf和scanf_s的区别
scanf()不会检查输入的边界,因此输入的数据可能会溢出,导致程序出错 scanf_s()更安全,其会检查输入的边界 如: char ch[6]; scanf("%s",ch); ...
- scanf()与scanf_s()的区别
scanf() 函数 : scanf() 函数是格式化输入函数,它从标准输入设备(键盘) 读取输入的信息. 其调用格式为:scanf("<格式化字符串>",<地址 ...
- C语言中,scanf与scanf_s的简单区别
C语言中,scanf与scanf_s的简单区别 scanf()不会检查输入边界,可能造成数据溢出,scanf_s()会进行边界检查. 如name[5], scanf("%s",na ...
- c语言scanf错误c4996,C语言杂谈(一)scanf()、scanf_s()与错误 C4996
错误 C4996 初学C语言时,第一个接触到的I/O函数便是scanf()了.但在高版本的 Visual Studio (包括但不限于2015.2013.2012)编译代码时,却会出现意想不到的错误. ...
- c语言scanf错误c4996,C语言常见错误杂谈(一)scanf()、scanf_s()与错误 C4996与解决方法...
错误 C4996 初学C语言时,第一个接触到的I/O函数便是scanf()了.但在高版本的 Visual Studio (包括但不限于2015.2013.2012)编译代码时,却会出现意想不到的错误. ...
- c语言scanf错误c4996,C语言杂谈(一)scanf()、scanf_s()与错误 C4996(示例代码)
错误 C4996 初学C语言时,第一个接触到的I/O函数便是scanf()了.但在高版本的 Visual Studio (包括但不限于2015.2013.2012)编译代码时,却会出现意想不到的错误. ...
- scanf与scanf_s区别
最近有这么一篇作业,输入十个等长字符串并为其排序,本来是很简单的一道题,结果运行时却疯狂越界,百度了之后才知道是scanf的锅,于是决定查查其区别. 最大区别为scanf()在读取数据时不检查边界,所 ...
最新文章
- 在Asp.Net MVC中设定site路径所对应的默认action
- 大数据-07-Spark之流数据
- 松果出行CTO朱蓝天做客《智慧Talk》,解开共享电单车产研密码
- apache的斜杠问题
- Unity之流光效果
- Visual Studio怎么使用中文帮助文档
- 如何学人工智能的思考
- gini系数 决策树_案例7:机器学习--使用决策树实现泰坦尼克号乘客生存率预测...
- Linux常用终端命令及扩展(五)
- android3种播放视频方式,Android 两种方式播放视频
- 我的世界HMCL如何安装Java_Ubuntu 18.04 LTS 使用 Minecraft 我的世界第三方启动器 HMCL...
- 图示-实现hive的文件与hdfs的导入导出
- 苹果se2_太快了!苹果已面向iPhone SE 2用户推送iOS 13.4.1
- 2013年计算机试题(三),2013年计算机等级考试(一级Ms Office)经典试题(三)及答案...
- 哪个软件能准确测试人脸,人脸识别软件哪个好?人脸识别软件推荐2020
- MDWechat(微信美化)免费
- 记录一些使用化学软件的心得(含bug和问题解决)
- 1024程序员节盛大开幕,九大操作系统掌门人、六代技术人齐聚岳麓,见证技术大时代
- rsa/ecb/pkcs1padding php,PHPJAVA RSA/ECB/PKCS1Padding 加密解密
- pybullet中欧拉角姿态可视化及顺序记录(画机械臂末端坐标)