Задание: создать структуру, в которой будет находиться информация о химических элементах.
Сначала я сделал ввод-вывод при помощи cin/cout, и все отлично работало. Но мой преподаватель сказал, что нужно все сделать средствами языка C, поэтому мне пришлось переделывать все, используя функции fgets(), printf() и scanf()... И тут возникла проблема: при считывании данных из потока stdin, некоторые поля структуры не заполняются (в цикле они пропускаются). Вот как это выглядит:
А вот мой код:
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
struct ELEMENT {
char name[10];
char symbol[2];
int number;
char type[10];
float mass;
char electrons[10];
};
int main() {
const int N = 2; //Количество элементов в массиве
ELEMENT element[N];
int i;
// Заполнение массива химических элементов
for (i = 0; i < N; i++) {
printf("Enter element %d name: ", i);
fgets(element[i].name, 10, stdin);
printf("Enter element %d symbol: ", i);
fgets(element[i].symbol, 2, stdin);
printf("Enter element %d number: ", i); //номер элемента
scanf("%d", &element[i].number);
printf("Enter element %d type: ", i);
fgets(element[i].type, 10, stdin);
printf("Enter element %d mass: ", i);
scanf("%f", &element[i].number);
printf("Enter element %d electrons: ", i);
fgets(element[i].electrons, 10, stdin);
}
for (i = 0; i < N; i++) {
printf("Chimestry elements in our database:\n");
printf("----------------------------------");
printf("Name %d: ", i);
puts(element[i].name);
printf("Symbol %d: ", i);
puts(element[i].symbol);
printf("Number %d: %d\n", i, element[i].number);
printf("Type %d: ", i);
puts(element[i].type);
printf("Mass %d: %f\n", i, element[i].mass);
printf("Electrons %d: ", i);
puts(element[i].electrons);
}
system("pause");
return 0;
}
Подскажите пожалуйста, из-за чего это происходит и как это исправить