@marlaaa

Почему не могу записать данные из массива структур в файл?

цель была сделать так чтоб отдельной функцией можно было записать данные в файл.
в файле вместо данных выводит: -842150451-842150451-842150451-842150451
#include <iostream>
#include <fstream>
using namespace std;
struct student {
    string name;
    string surname;
    string patronimic;
    string vuz;
    int telnumber;
    string dr;
    string adress;
    string pol;
    int rost;
    int ves;
    int kurs;
    string gruppa;
    string speshial;
    string naz;
};

void info(student* stu, int n) {
    cout << "Введите количество студентов:";

    cin >> n;
    stu = new student[n];
    ofstream srt("laba13.bin", ios::binary);
    for (int i = 0; i < n; i++) {

        cout << "Введите имя:" << endl;
        cin >> stu[i].name;

        cout << "Введите фамилию:" << endl;
        cin >> stu[i].surname;

        cout << "Введите отчество:" << endl;
        cin >> stu[i].patronimic;
        cout << "Введите пол:" << endl;
        cin >> stu[i].pol;
        cout << "Введите национальность:" << endl;
        cin >> stu[i].naz;
        cout << "Введите номер телефона" << endl;
        cin >> stu[i].telnumber;
        cout << "Введите вуз:" << endl;
        cin >> stu[i].vuz;
        cout << "Введите курс:" << endl;
        cin >> stu[i].kurs;
        cout << "Введите группу:" << endl;
        cin >> stu[i].gruppa;
        cout << "Введите специальность:" << endl;
        cin >> stu[i].speshial;
        cout << "Введите рост:" << endl;
        cin >> stu[i].rost;
        cout << "Введите вес:" << endl;
        cin >> stu[i].ves;
        cout << "Введите адресс:" << endl;
        cin >> stu[i].adress;
        cout << "Введите дату рождения:" << endl;
        cin >> stu[i].dr;
    }
}
void writefile() {
    int n=1;
    student* stu = new student[n];
    info(stu, n);
    ofstream srt("laba13.bin", ios::binary);
    for (int i = 0; i < n; i++) {

        srt << stu[i].name;

        srt << stu[i].surname;

        srt << stu[i].patronimic;

        srt << stu[i].pol;
 
        srt << stu[i].naz;

        srt << stu[i].telnumber;

        srt << stu[i].vuz;

        srt << stu[i].kurs;

        srt << stu[i].gruppa;

        srt << stu[i].speshial;

        srt << stu[i].rost;

        srt << stu[i].ves;

        srt << stu[i].adress;

        srt << stu[i].dr;
    }

}

int main()
{
    setlocale(LC_ALL, "Rus");
    writefile();
    return 0;
}
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
Для записи строк используй конструкцию:
srt.write(stu[i].name.c_str(), stu[i].name.length());


Если потом захочешь читать этот файл программно, то запись надо модернизировать.
Например между полями записывать символ разделитель, или перед каждой строкой писать ее размер.

Файл в двоичном режиме открываешь с каким-то скрытым смыслом?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы