千家信息网

C语言中scanf与scanf_s函数怎么用

发表于:2025-11-15 作者:千家信息网编辑
千家信息网最后更新 2025年11月15日,小编给大家分享一下C语言中scanf与scanf_s函数怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.scanf
千家信息网最后更新 2025年11月15日C语言中scanf与scanf_s函数怎么用

小编给大家分享一下C语言中scanf与scanf_s函数怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

1.scanf_s(是vs提供的函数)

a.代码1

int main(){        char a = 0;        //scanf_s("%c", &a, 1);        scanf_s("%c", &a, sizeof(a));        return 0;}

scanf_s有三个参数,最后一个是变量a所占据空间的大小(单位为字节),这里可以写1,也可以写sizeof(a)。如果a为整型的话,第三个参数就为4,或者sizeof(a)。

b.代码2

int main(){        char a = 0, b = 0;        scanf_s("%c %c", &a, 1, &b, 1);        printf("%c %c", a, b);        return 0;}

可不要写成 scanf_s("%c%c",&a,&b,1,1); 这样会出错的

c.代码3

int main(){        char arr1[5] = { 0 };        scanf_s("%s", arr1, sizeof(arr1));        printf("%s", arr1);        return 0;}

注意:输入字符的个数时,一定是比数组的空间个数小的,比如像上面的代码只能输入1-4个字符,而不是5个,不然会出错的。(arr[4]装的应该是一个换行符)

d.安全性检测

int main(){        char arr1[5] = { 0 };        int c=scanf_s("%s", arr1, sizeof(arr1));        printf("%d\n", c);        printf("%s", arr1);        return 0;}

如果输入的字符个数>=数组空间 个数,scanf_s的返回值就为0,反之则为1。

int main(){        char arr1[5] = { 0 };        scanf_s("%s", arr1, sizeof(arr1));        printf("%s", arr1);        return 0;}

如果输入的字符个数>=数组空间 个数,是不会打印数组中的元素的。(而scanf函数就会打印出)

2.scanf(标准的库函数)

a.代码1

#define _CRT_SECURE_NO_WARNINGS#include int main(){        int a = 0;        scanf("%d", &a);        printf("%d", a);        return 0;}

在VS13 17 19的版本下使用scanf函数一定在最开始(#define _CRT_SECURE_NO_WARNINGS),不然会报错的。

b.安全性测试

int main(){        char arr1[5] = { 0 };        int c=scanf("%s", arr1);        printf("%d\n", c);        printf("%s", arr1);        return 0;}

当我们输入abcdefg 7个字符时(已经超出了数组的空间个数了),虽然可以打印出来,但是arr1附近的栈空间已被破坏了,出现越界的情况了。scanf_s不会打印出来,也就不存在越界的行为了。

c.当在scanf函数里面输入格式符

如%d %d(%d%d之间有空格),那么通过标准输入设备(键盘)输入时两个整型之间也加一个空格。

如%d,%d(%d%d之间逗号),那么通过标准输入设备(键盘)输入时两个整型之间也加一个逗号。

3.总结

使用scanf_s函数虽然安全性比较高,但是可移植性差。比如含有scanf_s函数的代码不一定在其它的编译器上能够跑过。

scanf函数虽然没有scanf_s函数那么安全,但可移植性是比scanf_s强。

scanf_s函数与scanf函数的使用与比较今天就分享到这里了,如果对你有帮助的话吗,可以给个关注,顺便给个赞。

以上是"C语言中scanf与scanf_s函数怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

函数 输入 个数 代码 空间 字符 数组 安全 之间 安全性 标准 篇文章 语言 三个 两个 内容 参数 移植性 设备 逗号 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 lol没有服务器请检查网络状态 服务器基础知识测试题 一个服务器最大能用多少 天下3哪个服务器好 通信网络安全防护管理系统登录 软件开发硬件设备有哪些公司 orl数据库修改最大连接数 通用数据库一览表 阴阳师最开始有哪些服务器 幼儿园中班主题网络安全员 维普数据库字段标识符mm表示 城市基本信息数据库 表格内的ex服务器在哪里 amh面板修改默认数据库密码 钱塘云仓网络技术有限公司 上海投嶒网络技术有限公司招聘 数据库为什么要逻辑删除 webaccess创建数据库 bim软件开发工程加薪必备 郑州天道软件开发有限公司 自己建一个服务器有什么用 挂qq服务器 疾病和蛋白关联数据库 北京千锋互联网科技有限 同城游戏老是提示服务器更新中 网络安全文明宣传周 互联网技术属于网络技术吗 网络安全性问题解决措施 义乌企业软件开发设计 公民网络安全身份证
0