我试图从用户那里获取输入,并且fgets正在跳过第一个输入。我知道原因是与fgets是读从以前的声明“\ n”或至少我认为是这样的原因,但我似乎无法修复它C fgets跳过用户输入,即使在刷新缓冲区时
注意,这是一个更大的项目的一部分
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 1000
int main(void) {
char content[MAX];
char content2[MAX];
char content3[MAX];
char content4[MAX];
char content5[MAX];
char input[4];
char input2[4];
printf("Do you want to continue yes/no?\n");
fgets(input, 4, stdin);
if (strncmp (input, "no", 2) == 0) {
break;
}
else if (strncmp (input, "yes", 3) == 0) {
fflush(stdin);
printf("Country:\n");
fgets(content, MAX, stdin);
printf("Province/state: \n");
fgets(content2 ,MAX, stdin);
printf("Postal/zip code:\n");
fgets(content3 ,MAX, stdin);
printf("Company:\n");
fgets(content4 ,MAX, stdin);
printf("Email:\n");
fgets(content5 ,MAX, stdin);
}
这正是发生的情况。最简单的解决方法是增加'input'的大小。你希望在*是/否结束时*调用'fgets'来获取换行符 – StoryTeller