首页 > 解决方案 > 获取()函数抛出异常?

问题描述

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 个字符,控制台打印正确(并且不打印“按任意键继续...由于“系统(“暂停”)状态“),但程序卡在调试器屏幕上,在最后一个“printf”语句之后,我得到一个红色错误符号,并弹出一个说:“运行时检查失败 #2 - 变量‘lastName’周围的堆栈已损坏。”这是否意味着“gets()”函数将仅读取 5 个独占字符?

标签: cvisual-studiouser-inputgets

解决方案


您在这里有多个错误:

另请注意,函数格式void getInputWith_gets()已过时,您应该编写void getInputWith_gets(void).

总体而言,您似乎正在从完全过时的来源(超过 20 年过时)学习 C。


推荐阅读