Run-Time Check Failure #2 ,
通常表示栈内存被破坏了。这个问题很可能是由于不正确的 scanf 使用引起的。具体来说,当你使用 scanf 来读取字符时,不应该使用 %s 格式说明符,因为 %s 会读取直到遇到空格或制表符为止的所有字符,这可能会导致读取超出 ch 变量分配的内存空间。
-
scanf格式字符串错误:读取单个字符时应该使用%c而不是%s。 -
scanf的&操作符:读取字符时不需要&操作符。 -
清除输入缓冲区:在使用
scanf读取字符后,需要确保清除了输入缓冲区中的剩余字符,特别是换行符。
char ch;
printf("\n输入学生信息(y/n);\n");
scanf(" %c", &ch); // 使用 %c 读取单个字符,并在前面添加空格以消耗前面的换行符
while (getchar() != '\n'); // 清除缓冲区中的剩余字符

2220

被折叠的 条评论
为什么被折叠?



