VS2019中scanf()和scanf_s()函数的问题

在VS2019环境下学习C语言,遇到使用scanf()函数报错,而使用scanf_s()函数则无误,但后者在处理字符串输入时引发异常。报错源于字符数组输入。解决办法是在项目属性中添加预处理器定义_CRT_SECURE_NO_DEPRECATE,以继续使用scanf()函数。
摘要由CSDN通过智能技术生成

最近在参考C-Prime-Plus第六版重新学习C语言知识,环境为VS2019.

在处理这两个函数时遇到了一些问题.

VS2019在使用scanf()函数时会进行报错,替换成scanf_s()函数没有问题.

相比之下scanf_s()函数的安全性更高.

但是在编译这个程序时又出现了报错:0x00007FFF986F2172 (ucrtbased.dll)处(位于 Project_empty.exe 中)引发的异常: 

// talkback.c -- 演示与用户交互
#include <stdio.h>
#include <string.h> // 提供strlen()函数的原型
#define DENSITY 62.4 // 人体密度(单位:磅/立方英尺)
int main()
{
	float weight, volume;
	int size, letters;
	char name[40]; // name是一个可容纳40个字符的数组
	printf("Hi! What's your first name?\n");
	scanf_s("%s", name);
	printf("%s, what's your weight in pounds?\n", name);
	scanf_s("%f", &weight);
	size = sizeof name;
	letters = strlen(name);
	volume = weight / DENSITY;
	printf("Well, %s, your volume is %2.2f cubic feet.\n",
		name, volume);
	printf("Also, your first name has %d letters
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值