如何从C中的fgets中删除多余的字符输入?

Lor*_*uel 2 c input overflow fgets output

我听说在C编程中使用gets()是不好的,使用fgets更安全......所以我使用的是fgets.但是,我遇到了fgets的问题:我输入了太多的字符,不知怎的,它溢出了.

如何摆脱额外的输入字符?

char answer[4];
char answer2[4];

fgets(answer,sizeof(answer),stdin);
printf("answer: %s\n",answer);

fgets(answer2,sizeof(answer2),stdin);
printf("answer2: %s\n",answer2);
Run Code Online (Sandbox Code Playgroud)

例如,对于第一个fgets,我输入123456,我得到的输出是

answer: 123
answer2: 456
Run Code Online (Sandbox Code Playgroud)

如何删除456进入下一个fgets输入?在为第一个fgets输入123456之后我想要这样的输出:

answer: 123
Run Code Online (Sandbox Code Playgroud)

然后,用户继续输入下一个fgets的输入...

BLU*_*IXY 6

fgets(answer,sizeof(answer),stdin);
printf("answer: %s\n",answer);
if(!strchr(answer, '\n'))     //newline does not exist
    while(fgetc(stdin)!='\n');//discard until newline
fgets(answer2,sizeof(answer2),stdin);
Run Code Online (Sandbox Code Playgroud)