Ввод данных в массив структур - C (СИ)
Формулировка задачи:
Добрый день! Подскажите пожалуйста как решить проблему - ввод данных в первый элемент структуры производится только для 1 структуры в массиве, в последующих циклах это пропускается и предлагается сразу ввод во вторую строку. В чем может быть проблема?
Сама структура
for (int i = 0; i<n; i++)
{
puts("Enter name: ");
gets_s(book[i].NAME);
_flushall();
puts("Enter zodiac: ");
gets_s(book[i].ZODIAC);
puts("Enter date of birth: ");
scanf_s("%d %d %d", &book[i].BDAY[0], &book[i].BDAY[1], &book[i].BDAY[2]);
};struct znak
{
char NAME[10];
char ZODIAC[15];
int BDAY[3];
} book[n];Решение задачи: «Ввод данных в массив структур»
textual
Листинг программы
for (int i = 0; i<n; i++)
{
puts("Enter name: ");
scanf("%s", book[i].NAME);
_flushall();
puts("Enter zodiac: ");
scanf("%s", book[i].ZODIAC);
puts("Enter date of birth: ");
scanf_s("%d %d %d", &book[i].BDAY[0], &book[i].BDAY[1], &book[i].BDAY[2]);
};
Объяснение кода листинга программы
- Ввод данных в массив структур.
- Используется цикл for для прохода по всем элементам массива.
- В каждой итерации цикла пользователю предлагается ввести данные для каждого поля структуры.
- Для ввода имени используется функция scanf с форматом
%s, которая считывает строку символов и сохраняет ее в поле NAME структуры. - Для ввода знака зодиака также используется функция scanf с форматом
%s, которая считывает строку символов и сохраняет ее в поле ZODIAC структуры. - Для ввода даты рождения используется функция scanf_s с форматом
%d %d %d, которая считывает три целых числа и сохраняет их в поле BDAY структуры. - В конце каждой итерации цикла пользователю предлагается ввести данные для следующего элемента структуры.
- После завершения цикла все введенные данные сохраняются в массиве структур.