scanf_s写入错误怎么办?(第三个参数指定接收长度)

Posted Dontla

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scanf_s写入错误怎么办?(第三个参数指定接收长度)相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
int main() {
	char i[5];
	char b[100];
	int result;//函数返回值
	scanf_s("%s", &i);
	printf("普通拳!\\n");
	scanf_s("%s %s", &i, &b);
	result = scanf_s("%s %s", &i, &b);//运行结果为2,因为输入了两个数,一个a,一个b
	return 0;
}

如上代码,调试时报错:
在这里插入图片描述

解决办法:
scanf_s要加第三个参数,指定能够读取的输入字符串长度,如果输入的字符串(包含‘\\0’)大于这个长度,第一个字符就会变成‘\\0’
在这里插入图片描述

若输入小于或等于指定长度,结果就正常
在这里插入图片描述
在这里插入图片描述
一般第三个参数用sizeof(i)就好了

参考文章:使用scanf_s发生写入错误的解决途径

以上是关于scanf_s写入错误怎么办?(第三个参数指定接收长度)的主要内容,如果未能解决你的问题,请参考以下文章

如何在PHP中写入错误日志文件[关闭]

在VS2019中编写C语言的链表程序出现了C4473等错误,怎么修改?

vue3setupwatch监听多个值怎么知道是哪个值触发的

函数sigsuspend

使用 scanf 从管道读取失败

C语言杂谈scanf()scanf_s()与错误 C4996