学习C碰到的问题02:C6064 缺少“scanf_s”的整型参数(对应于转换说明符“2”)

文章描述了一个在Windows10环境下,使用VisualStudio2022进行C语言开发时遇到的问题。开发者在输入字符串时遇到了编译警告,原因是使用scanf_s函数时未提供字符串长度。通过添加字符串长度参数,成功消除了警告并使程序正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发环境:

系统:windows10 X64 专业版

IDE:Microsoft Visual Studio 2022 community

语言:C

源代码如下:

/* praise1.c -- 使用不同类型的字符串 */
#include <stdio.h>
#include <string.h>

#define _CRT_SECURE_NO_WARNINGS
#define PRAISE "You are an extraordinary being."

int main(void)
{
	char name[40];
	printf("What's your name? ");
	scanf_s("%s",name); // 使用scanf_s输入字符串,必须加字符串的长度
	printf("Hello, %s.%s\n", name, PRAISE);
	printf("%d\n", strlen(name));
	return 0;
}

运行时输入参数就会卡住报错。

报错内容

然后停止后出现如下警告:

C6064 缺少“scanf_s”的整型参数(对应于转换说明符“2”)

C6054    可能没有为字符串“name”添加字符串零终止符。

 C6328    大小不匹配: 已将“unsigned __int64”作为 _Param_(2) 传递,但需要使用“int”来调用“printf”。

原因:scanf_s()的变量是字符串时需要加入字符串长度

修改后代码如下:

#include <stdio.h>
#include <string.h>

#define _CRT_SECURE_NO_WARNINGS
#define PRAISE "You are an extraordinary being."

int main(void)
{
	char name[40];
	printf("What's your name? ");
	scanf_s("%s",name,40); // 使用scanf_s输入字符串,必须加字符串的长度
	printf("Hello, %s.%s\n", name, PRAISE);
	printf("%d\n", strlen(name));
	return 0;
}

这样就可以正常运行了。

感谢大佬 “你挡我发光了” 的分享

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值