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