Не работает функция ввода - 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
хранятся введенные данные.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д