pypsrand 发表于 2018-1-29 13:08:26

额,简单程序出错,不知道怎么解决~求助

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;
}

调试显示没错,但每次运行就崩了~~

ba21 发表于 2018-1-29 13:12:00

scanf_s 3个参数

很多带“_s”后缀的函数是为了让原版函数更安全,传入一个和参数有关的大小值,避免引用到不存在的元素,有时黑客可以利用原版的不安全性黑掉系统。比如:char d;写成scanf_s("%s",d,20);才是正确的,有这个参数20使准确性提高。

20是长度。

ba21 发表于 2018-1-29 13:13:12

scanf_s要3个参数

很多带“_s”后缀的函数是为了让原版函数更安全,传入一个和参数有关的大小值,避免引用到不存在的元素,有时黑客可以利用原版的不安全性黑掉系统。比如:char d;写成scanf_s("%s",d,20);才是正确的,有这个参数20使准确性提高。

ba21 发表于 2018-1-29 13:14:38

scanf_s 要3个参数
比如:char d;写成scanf_s("%s",d,20)

orino 发表于 2018-1-29 13:15:26

scanf("%c", &a)
读取字符用c,字符串用s

alltolove 发表于 2018-1-29 14:07:34

你把一个字符串传给了字符,内存溢出了

originex 发表于 2018-1-30 13:24:49

右键工程名–>属性–>C/C++–>预处理器–>预处理器定义,编辑右边输入框加入:
_CRT_SECURE_NO_WARNINGS

然后把scanf_s换回scanf
页: [1]
查看完整版本: 额,简单程序出错,不知道怎么解决~求助