报错:scanf_s函数报错:没有为格式字符串传递足够的参数

int main() {char s1[20] = "i m name";char *p1, *p2;char s3[10] = {0};p1 = s1;p2 = s3;printf("请输入你的名字: \n");scanf_s("%s",&s3);printf("%s\n", s3);for (; *p1 != '\0'; p1++) {if (*p1 == *p2) {p2 = s3;}printf("I am %s\n", s3);}while (true){}return 0;
}

这个问题很变态

解决办法:在使用%c和%s读入字符或字符串时,应在地址参数后附加一个缓冲区边界值。 

int main() {char s1[20] = "i m name";char *p1, *p2;char s3[10] = {0};p1 = s1;p2 = s3;printf("请输入你的名字: \n");//scanf_s("%s",&s3);scanf_s("%s",&s3,sizeof(s3));   //使用sizeofprintf("%s\n", s3);for (; *p1 != '\0'; p1++) {if (*p1 == *p2) {p2 = s3;}printf("I am %s\n", s3);}while (true){}return 0;
}

总结;就会提示你没有为格式字符串传递足够的参数。
首先我们来看一下scanf和scanf_s的区别
scanf()不会检查输入边界,可能造成数据溢出。
scanf_s()会进行边界检查。
scanf()函数是标准C中提供的标准输入函数,用以用户输入数据
scanf_s()函数是Microsoft公司VS开发工具提供的一个功能相同的安全标准输入函数,从vc++2005开始,VS系统提供了scanf_s()。在调用该函数时,必须提供一个数字以表明最多读取多少位字符。

上面的程序有点复杂;下面来一个简单点的例子:

int main(void) {char str1[30] = { 0 };char str2[30] = { 0 };char str3[30] = { 0 };//gets() 用法printf("Input a string: ");gets_s(str1);//scanf() 用法printf("Input a string: ");scanf_s("%s", str2);scanf_s("%s", str3);printf("\nstr1: %s\n", str1);printf("str2: %s\n", str2);printf("str3: %s\n", str3);while (true){}return 0;
}

上面的代码当你输入字符串的时候会报错:没有为格式字符串传递足够的参数

解决办法:在使用%c和%s读入字符或字符串时,应在地址参数后附加一个缓冲区边界值。 

解决scanf_s函数报错:没有为格式字符串传递足够的参数相关推荐

  1. 【C语言】警告:“scanf_s”: 没有为格式字符串传递足够的参数

    原代码: int main() {char password[20] = { 0 };printf("Please input your password:\n");scanf_s ...

  2. python def函数报错详解_python自定义函数def的应用详解

    这篇文章主要介绍了python自定义函数def的应用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 这里是三岁,来和大家唠唠 ...

  3. VS使用scanf函数报错解决方法

    VS使用scanf函数报错解决方法 首先来看一段很简单的C语言代码 #include<stdio.h> int main(void) {char s[10];scanf("%s& ...

  4. 解决vs2015使用fopen、fprintf等函数报错的问题

    解决vs2015使用fopen.fprintf等函数报错的问题 参考文章: (1)解决vs2015使用fopen.fprintf等函数报错的问题 (2)https://www.cnblogs.com/ ...

  5. php的old函数,laravel单元测试之phpUnit中old()函数报错解决

    php 的 laravel单元测试之phpUnit中old()函数报错解决 前言 最近在做laravel单元测试.遇到了一个问题: 当添加的view里面使用old()函数时就会报错,正常url访问没问 ...

  6. Oracle中wm_concat函数报错解决方法

    Oracle中wm_concat函数报错解决方法 参考文章: (1)Oracle中wm_concat函数报错解决方法 (2)https://www.cnblogs.com/52net/archive/ ...

  7. 解决VS2017中使用scanf函数报错的问题

    解决VS2017中使用scanf函数报错的问题 参考文章: (1)解决VS2017中使用scanf函数报错的问题 (2)https://www.cnblogs.com/tanghaiyong/p/11 ...

  8. 2021-06-10 工作笔记 ng-change不能触发的解决方法+wui-date日期选择器使用onchange调用函数报错

    当通过JavaScript来修改ng-model的值,ng-change不能触发 <input type="number" ng-model="testNumber ...

  9. DataFrame/Series运行round()函数报错“TypeError: a float is required”解决办法

    DataFrame/Series运行round()函数报错"TypeError: a float is required"解决办法 原代码片段: #把数据按年龄分层,然后按照不同层 ...

最新文章

  1. 法大大刘谦:法务智能化创新实践与行业趋势
  2. IDEA中 30 秒生成 Spring Cloud Alibaba 工程
  3. 一本很好的书LearnOpenGL
  4. 【学习笔记】关于最大公约数(gcd)的定理
  5. Bing搜索核心技术BitFunnel原理
  6. Java 8 Optional类深度解析(转)
  7. 记录一次配置unix网络编程环境的过程和遇到的问题
  8. centos 6 安装 php 5.5 fpm支持
  9. c++ vector排序_儿童时间管理课6:便利贴时间排序法
  10. 太空工程师-脚本-库存整理
  11. C++用cmath求平方根和次方
  12. 手机连Fiddler后,仍然不能上网的解决办法
  13. 全网最火! 阿里 P6 级,廖雪峰的「全栈架构师」开讲了
  14. 安装SQL2000,出现以前的某个程序安装已在安装计算机上创建挂起的文件操作(完美解决)
  15. 内网使用 IPV6 之Teredo篇
  16. java set 删除_Java Set remove()用法及代码示例
  17. STM32定时触发ADC 采样频率等问题总结
  18. Python gdal库读取tif文件
  19. Django解决css样式失效问题最终方法
  20. 类加载器系列一:类加载器有几种以及它们之间的关系?

热门文章

  1. c语言实现http服务器_基于postman实现http接口测试过程解析_服务器其它
  2. 不到30的成本,还不赶紧造起来——盘点软著申请小知识
  3. 2019无盘游戏服务器128g内存,云更新无盘客户端 v2019.8.15.12486官方版
  4. vue项目导入elementui_在vue项目中使用elementui
  5. php中update()函数,update_option()函数
  6. iphone黑屏转圈_iphone8一直在黑屏转圈
  7. mysql查询今天_昨天_7天_近30天_本月_上一月 数据_(转载)mysql查询今天、昨天、7天、近30天、本月、上一月数据...
  8. php分页代码 页数太多,php分页函数示例代码分享
  9. Java中string.equalsIgnoreCase(0)与0.equalsIgnoreCase(string)的区别:
  10. java8--IO(java疯狂讲义3复习笔记)