Я пишу программу, которая использует fgets() для сканирования строки длиной 3 символа в виде кода аэропорта для вылета и прибытия. Когда я пишу заявление вне его метода (в основном), он отлично работает, но внутри него не ждет ввода и оставляет переменные пустыми.fgets() не работает в функции
void newFlight()
{
printf("\n");
printf("============= CREATE A NEW FLIGHT ============= \n");
printf("Type 0 at any point to exit to main menu. \n");
printf("\n");
printf("EnterFlight ID (0 to cancel) : ");
scanf("%d", &flyList[curFly].flightID);
char codeA [4];
printf ("Enter Destination (Airport Code): ");
fgets(codeA, 3, stdin);
strcpy(codeA, flyList[curFly].arrive);
printf("%s %s \n", codeA, flyList[curFly].arrive); //TEST
printf("Enter Place Of Departure: ");
char codeD[4];
scanf("%s", codeD);
strcpy(codeD, flyList[curFly].depart);
printf("%s %s \n", codeD, flyList[curFly].depart); //TEST
printf("Enter Date Of Departure (DD MM YYYY): ");
scanf("%hd %hd %hd", &flyList[curFly].timeOfDep.day, &flyList[curFly].timeOfDep.month, &flyList[curFly].timeOfDep.year);
printf("Enter Time Of Departure (HH MM)in 24Hr Format: ");
scanf("%hd %hd", &flyList[curFly].timeOfDep.hour, &flyList[curFly].timeOfDep.minute);
curFly++;
}
Я добавил fflush (stdin); теперь он ждет ввода, но не принимает его ... –
scanf остается новой строкой. и переписать следующий 'strcpy (codeA, flyList [curFly] .depart);' – BLUEPIXY
@Barmar Я проверил это, я не думаю, что это то же самое, что и проблема с итерациями, моя проблема связана с фактическим сканированием строки –