【发布时间】:2021-11-28 22:48:54
【问题描述】:
我正在尝试从用户那里获取输入。
void InfoPrint(){
char FirstName[20];
char LastName[20];
int BirthYear;
printf("Input your First Name: ");
scanf("%19s", FirstName);
printf("\nInput your Last Name: ");
scanf("%19s", LastName);
printf("\nInput your year of birth: ");
scanf("%4d", &BirthYear);
printf("\n%s %s %d\n", FirstName, LastName, BirthYear);
}
为什么当我在 FirstName 或 LastName 中输入超过 19 个字符时,它会覆盖我的下一个变量?
【问题讨论】:
-
int clear_rest_of_line(void) { int ch; while (((ch = getchar()) != EOF) && (ch != '\n')) /*void*/; return (ch == EOF); } -
在您的问题中,您写道:
"it overwrites my next variable"-- 我强烈怀疑这种说法是否准确。请提供问题的minimal reproducible example 准确输入、预期输出和实际输出。这样的示例应该包括所有#include指令和一个函数main。
标签: c scanf buffer-overflow