额,简单程序出错,不知道怎么解决~求助
int main(){
char a;
printf("请输入任意一个大写字母R~T:\n");
scanf_s("%s", &a);
getchar();
if ('S' == a)
{
printf("请键入B完成输入:\n");
}
else if ('R' == a)
{
printf("R?重新输入\n");
}
else if ('T' == a)
{
printf("T?重新输入!\n");
}
else
{
printf("非法输入.....\n");
}
return 0;
}
调试显示没错,但每次运行就崩了~~ scanf_s 3个参数
很多带“_s”后缀的函数是为了让原版函数更安全,传入一个和参数有关的大小值,避免引用到不存在的元素,有时黑客可以利用原版的不安全性黑掉系统。比如:char d;写成scanf_s("%s",d,20);才是正确的,有这个参数20使准确性提高。
20是长度。 scanf_s要3个参数
很多带“_s”后缀的函数是为了让原版函数更安全,传入一个和参数有关的大小值,避免引用到不存在的元素,有时黑客可以利用原版的不安全性黑掉系统。比如:char d;写成scanf_s("%s",d,20);才是正确的,有这个参数20使准确性提高。 scanf_s 要3个参数
比如:char d;写成scanf_s("%s",d,20) scanf("%c", &a)
读取字符用c,字符串用s 你把一个字符串传给了字符,内存溢出了 右键工程名–>属性–>C/C++–>预处理器–>预处理器定义,编辑右边输入框加入:
_CRT_SECURE_NO_WARNINGS
然后把scanf_s换回scanf
页:
[1]