gets()函数抛出异常?

时间:2018-06-26 11:40:47

标签: c visual-studio user-input gets

void getInputWith_gets()
{
    char firstName[5];
    char lastName[5];
    printf("Enter your first name: ");
    gets(firstName);
    printf("Enter your last name: ");
    gets(lastName);
    printf("Hello, %s, %s\n", firstName, lastName);
}

int main(int argc, char **argv)
{
    getInputWith_gets();
    //getInputWith_fgets();
    system("pause");
    return 0;
}

我正在使用MS Visual Studio 2017,我知道使用“ gets()”函数的限制,我最多可以输入5个字符,但是如果我输入的是5个字符,则控制台可以正确打印(并且不会因为“ system(” pause“)语句”,所以不打印“按任意键继续...”,但是程序卡在调试器屏幕上,在最后一个“ printf”语句之后,我得到一个红色错误符号并弹出说: “运行时检查失败#2-变量'lastName'周围的堆栈已损坏。” 这是否意味着“ gets()”函数将仅读取5个互斥字符?

1 个答案:

答案 0 :(得分:0)

您在这里有多个错误:

还要注意,函数格式void getInputWith_gets()是过时的样式,您应该编写void getInputWith_gets(void)

总体而言,您似乎正在从一个完全过时的资源(已经过了20年)学习C。