【发布时间】:2017-03-04 16:12:22
【问题描述】:
我正在尝试从用户那里获取输入,而 fgets 正在跳过第一个输入。我知道原因是 fgets 正在读取上一条语句中的“\n”,或者至少我认为这是原因,但我似乎无法修复它
请注意,这是一个更大项目的一部分
#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的大小。您希望 that 调用fgets在 yes/no 末尾选择换行符
标签: c string input buffer fgets