在vs2022中scanf和scnaf_s的区别
作者:互联网
在C Primer Plus中有这样一代码在vs2022编写中出现的错误:
/praise1.c--使用不同类型的字符串*/
#include <stdio.h>
$define PRAISE"You are an extrordinary being"
int main()
{
char name[40];
printf("What`s your name?");
scanf_s("%s",name);
printf("Hello,%s\n",name,PRAISE);
return 0;
}
在vs2022中有一个警告scanf_s:没有为格式字符串传递足够的参数
解决办法:在使用%c和%s读入字符或字符串时,应在地址参数后附加一个缓冲区边界值。
scanf()不会检查输入边界,可能造成数据的溢出。
scanf_s会进行边界检查,调用该函数时,必须提供一个数字以表明最多读取多少位字符。
把上述的scanf_s("%s",name)改为scanf_s("%s",sizeof(name));即可
标签:scnaf,name,scanf,vs2022,PRAISE,printf,字符串 来源: https://www.cnblogs.com/Hittler/p/16660212.html