对于上述问题的解决办法:
在用scanf_s()读取字符串的时候需要添加一个读取的字符长长度的参数,即需要将scanf_s("%s",a)改为scanf_s("%s",a,sizeof(a))

在学习C语言时,对于输入函数来讲书上一直在用scanf(),但是VS编译器在都会提示我改成scanf_s(),说是更安全,由于我刚处于入门阶段,一开始只是在读取整数的输入,直到有一天我遇到了这个错误,这是我在第一次尝试读取字符串的狮虎遇到的,那么为啥会出现这个错误呢,我决定还是再详细的看一下scanf_s()这个函数吧。

以下内容参考与:C语言scanf_s()函数的用法

scanf_s()函数是Microsoft公司VS开发工具提供的一个功能相同的安全标准输入函数,从vc++2005开始,VS系统提供了scanf_s()。在调用该函数时,必须提供一个数字以表明最多读取多少位字符。另外,很多带“_s”后缀的函数是为了让原版函数更安全,传入一个和参数有关的大小值,避免引用到不存在的元素,防止hacker利用原版的不安全性(漏洞)黑掉系统。简单的理解,就是scanf_s会比scanf更安全,那么为了安全也需要编程者多传一些参数,这些参数就是变量的长度(占用的字节数)。

对于整数和浮点数而言,和scanf()函数用法相同

    float x ;int y;scanf_s("%f %d", &x,&y);

对于基本的字符类型,也无需提供大小参数

    char z;scanf_s("%c", &z);

在读取字符串的时候必须要提供一个要读取的字符串的大小

    char z[30];scanf_s("%s", z,5);printf("\n%s", z);

比方说我定义了一个30长度的字符数组,但是在读取的时候只给了一个5的长度,那么他最多只能读取4个字符,因为第五位要存放“\0”,为了不浪费内存空间,第二个参数最好使用sizeof()

    char z[30];scanf_s("%s", z,sizeof(z));printf("\n%s", z);

总结:在使用scanf_s()读取字符串的时候必须提供一个数字以表明最多读取多少位字符。即scanf_s("%s", 字符串, 字符串长度)

0x7A09E689 (ucrtbased.dll)处(位于 TalkBack.exe 中)引发的异常: 0xC0000005: 写入位置 0x01100000 时发生访问冲突。相关推荐

  1. 0x0F19B7EC (ucrtbased.dll)处(位于 ex6.exe 中)引发的异常: 0xC0000005: 写入位置 0x00740000 时发生访问冲突。

    0x0F19B7EC (ucrtbased.dll)处(位于 ex6.exe 中)引发的异常: 0xC0000005: 写入位置 0x00740000 时发生访问冲突. 参考文章: (1)0x0F19 ...

  2. 0x0F19B7EC (ucrtbased.dll)处(位于 ex6.exe 中)引发的异常: 0xC0000005: 写入位置 0x00740000 时发生访问冲突。...

    下面的代码在编译,运行时没有问题,在输入内容是出现异常如下: 0x0F19B7EC (ucrtbased.dll)处(位于 ex6.exe 中)引发的异常: 0xC0000005: 写入位置 0x00 ...

  3. 0x00007FFF77912079 (ucrtbased.dll)处(位于 Demo.exe 中)引发的异常: 0xC0000005: 写入位置 0x000000108FD40000 时发生访问冲突

    VS中"This function or variable may be unsafe."警告的解决办法 Visual2019的scanf变成scanf_s 然后我就在scanf_ ...

  4. vs中遇见> 0x7BA4EF8C (ucrtbased.dll)处(位于 Project1.exe 中)引发的异常: 0xC0000005: 写入位置 0x00540000 时发生访问冲突。

    0x7BA4EF8C (ucrtbased.dll)处(位于 Project1.exe 中)引发的异常: 0xC0000005: 写入位置 0x00540000 时发生访问冲突. 在VS2019版中写 ...

  5. (xxx.dll)处(位于xxx.exe 中)引发的异常: 0xC0000005: 读取位置 0x0000003F 时发生访问冲突。已解决。

    下面两个这种类型的报错都一样.(跟xxx.dll和xxx.exe都没关系) 0x794CECC1 (Qt5Cored.dll)处(位于 xxx.exe 中)引发的异常: 0xC0000005: 读取位 ...

  6. 0x774B9E37 (KernelBase.dll)处(位于 LogonServer.exe 中)引发的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突解决

    网狐大联盟核心服务数据解锁函数访问冲突,报错: 0x774B9E37 (KernelBase.dll)处(位于 LogonServer.exe 中)引发的异常: 0xC0000005: 读取位置 0x ...

  7. 0x5085170C (ucrtbased.dll)处(位于 Project1.exe 中)引发的异常: 0xC0000005: 读取位置 0x0000001A 时发生访问冲突。

    此处为非"%s" 类型数据以"%s"类型打印错误. #include <stdlib.h> #include <stdio.h> #if ...

  8. 0x00007FFA837F2487 (ucrtbased.dll)处(位于 指针.exe 中)引发的异常: 0xC0000005: 读取位置 0x0000000000000068 时发生访问冲突

    大佬们 运行完就是这样了,这个该怎么办呀.

  9. 0x00007FFD977C04A8 (Qt5Sqld.dll)处(位于 a.exe 中)引发的异常: 0xC0000005: 读取位置 0x0000000000000010 时发生访问冲突

    今天在修改别人代码的时候出现了一个问题: 我想要在子线程中使用 QSqlDatabase::addDatabase("QMYSQL"); 但是,怎么都运行不过去. 我调试,想找出问 ...

最新文章

  1. c语言 可变参数的宏,可变参数的宏__ VA_ARGS__的用法
  2. FutureTask中Treiber堆的实现
  3. plsq如何快捷整理代码_PLSQL Developer使用技巧整理(转)
  4. tkinter 笔记: radiobutton 选择按钮(莫烦python笔记)
  5. Android获取SDK的版本信息
  6. mongo 时间格式化 查询_MongoDB中查询转换(将时间戳转变通用日期格式)
  7. Spring Boot 上传文件(spring boot upload file)
  8. 10个CSS和jQuery的加载中(loading)动画效果实现
  9. OpenCV级联分类器Cascade Classifier
  10. Python基础班---第一部分(基础)---Python基础知识---第一个Python程序
  11. 小米5s升级Android8,小米5s、小米5s Plus升级8.0提前,好消息!
  12. 15优秀免费JQuery 图片 滑动效果
  13. 高等数学(第七版)同济大学 习题4-5 个人解答
  14. 什么是工序分析法?工序分析的方法和实施步骤有哪些
  15. 5G网络切片安全隔离机制与应用
  16. 防封链接,无投诉按钮链接,地推链接制作,活动链接制作,防封无投诉按钮链接制作方法。
  17. 唐老师讲运算放大器(第五讲)——运放的应用
  18. 金三银四马上到了,找工作需要准备什么?
  19. mac 部署nexus私服库
  20. 2022.8.11今天回顾了以前c语言的理论知识,我们回顾了计算机的基本结构,存储器的内存组成,数据类型。分享给大家。

热门文章

  1. 如何用100元成本DIY一块全志V853 AI 开发板
  2. 《Springboot设计思想》2-Springboot青出于蓝
  3. 学习使我充实自己-列表具备的功能
  4. 随着云计算的发展,传统的数据中心逐渐转向虚拟化数据中心
  5. 亚商投资顾问 早餐FM/0614央行常备借贷便利利率下调
  6. 【Discuz】导航条、搜索栏的修改
  7. nginx Rewrite功能配置
  8. 电子万年历matlab仿真
  9. 使用python编写三个吃货吃馒头与一个伙夫生产馒头(线程与锁)
  10. 07-MySql 慢查询分析-执行计划篇