Имеется часть кода:
struct St
{
char Name[30];
int math;
int phys;
int inf;
int chem;
int dateOfBirth;
int group;
double ball;
} Students;
void addStudent() {
f1 = fopen("list.txt", "w");
cout << "Enter the Name of student: ";
cin.ignore(numeric_limits<streamsize>::max(), '\n');
gets_s(Students.Name, 29);
cout << "Enter the math ball: ";
cin >> Students.math;
cout << "Enter the informatics ball: ";
cin >> Students.inf;
cout << "Enter the physics ball: ";
cin >> Students.phys;
cout << "Enter the chemistry ball: ";
cin >> Students.chem;
cout << "Enter the date of birth: ";
cin >> Students.dateOfBirth;
cout << "Enter the group of student: ";
cin >> Students.group;
cout << "Enter the average ball: ";
cin >> Students.ball;
fwrite(&Students, 1, sizeof(Students), f1);
fclose(f1);
}
Задача - считать данные с консоли, записать их в переменные структуры и позже записать данные структуры в файл. Сделал таким образом, однако в файле получаю:
Sergei юююююююююююююююююююююю
Р >ж
$@
Думаю, что ошибка в fwrite()
, но не до конца понимаю, как в нее правильно записать параметры, ибо в структуре переменные разных типов
Да нет, у вас тип - нормальный plain old data, так что все, что, возможно, надо сделать - добавить букву b
в режиме работы файла, если вы в Windows (в Linux вроде разницы нет? Точно не уверен...), чтоб это был именно бинарный файл.
Ваш вариант записи просто сбрасывает в файл все, что есть в структуре. Только вот и читать его потом нужно через fread
в такую же структуру. Ясно, что "глазами" вы видите частично мусор (пустое место, оставшееся в поле имени) и бинарные представления чисел.
Если же вам нужно именно для человека - ну, открывайте ofstream
и пишите с помощью <<
, например. Или в файл, открытый через fopen
, с помощью fprintf
. Только тогда смотрите, пишите так, чтоб потом могли прочесть - например, имя на отдельной строке, чтоб не спуталось при чтении с числами.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Целый день мучаюсь вроде все правильно делаю, все пути к библиотекамlib и
Имеется такая функция, которая нужно выполнять одновременно в 100 потоков
Здравствуйте! Пытаюсь загрузить картинку логотип гугла(https://wwwgoogle