Не работает функция ввода - C (СИ)
Формулировка задачи:
в начале все нормально, но при втором вводе a[i].name функция просто пропускается и идет сразу ввод a[i].time
#include "stdafx.h"
#define N 2
struct TRAIN
{
char name[20];
int namber;
char time[10];
};
int main()
{
struct TRAIN a[N];
int i,x;
for (i = 0; i < N; i++)
{
printf("name train ");
fgets(a[i].name, 20, stdin);
printf("\n");
printf("time train ");
fgets(a[i].time, 10, stdin);
printf("\n");
printf("number train ");
scanf_s("%d", &a[i].namber);
printf("\n");
}
printf("namber train ");
scanf_s("%d", &x);
printf("\n");
for (i = 0; i < N;i++)
if (a[i].namber == x)
{
puts(a[i].name);
printf("\n");
puts(a[i].time);
printf("\n");
printf("%d", a[i].namber);
}
return 0;
}Решение задачи: «Не работает функция ввода»
textual
Листинг программы
for (i = 0; i < N; i++)
{
printf("name train ");
scanf_s("%s", a[i].name, 20u);
printf("\n");
printf("time train ");
scanf_s("%s", a[i].time, 10u);
printf("\n");
printf("number train ");
scanf_s("%d", &a[i].namber);
printf("\n");
}
Объяснение кода листинга программы
- Переменная
iинициализируется значением 0. - Условие цикла
forпроверяет, что значение переменнойiменьше N. - Если условие истинно, то выполняется тело цикла, иначе цикл завершается.
- В теле цикла происходит ввод данных с помощью функции
scanf_s. - Данные сохраняются в переменных
a[i].name,a[i].timeиa[i].namber. - После завершения цикла значение переменной
iувеличивается на 1. - Процесс повторяется, пока значение переменной
iменьше N. - Если значение переменной
iстановится равным N, то цикл завершается. - В результате выполнения цикла в массиве
aхранятся введенные данные.