Необходимо:
На данном этапе имеется следующий код:
struct TZap{ // Структура
char FIO[30];
char n_group[5];
char god_r[4];
double o_fizika;
double o_matematica;
double o_informatica;
double o_himia;
double s_b;
} Zap;
int size = sizeof(TZap); // Получаем размер записи структуры
FILE *Fz, *Ft;
char File_Zap[] = "zapisi.dat"; // Файл в котором хранятся данные
Fz = fopen(File_Zap,"r+b"); // Открываем файл для изменения данных
D_f = fileno(Fz);
len = filelength(D_f); // Получаем размер Файла
unsigned kol = len/size; // Получаем количество строк
TZap* mas_Z = new TZap[kol]; // Создаем объект структуры
cout << "\t FIO \t\t GROUP \t GOD \t FIZIKA \t MATH \t\t INFORM \t HIMIA \t\t SREDNEE" << endl; // Названия столбцов для вывода
for (i=0; i < kol; i++){ // Выводим структуру в виде таблицы
fread((mas_Z+i), size, 1, Fz);
Out(mas_Z[i]);
}
printf("\n\n Kol studet - %i.\n Select student to NUMBER ", kol);
scanf("%i", &kodS); // Вводим номер строки для редактирования
if ((kodS>0) && (kodS<kol+1)){ // Если Номер строки существует, то выполняем код
printf("\n F.I.O. - ");
char Stroka[30]; // Создаем буферную переменную
scanf("%s", Stroka); // Вводим новое значения элемента записи
cout << "\n\t STROKA = " << Stroka << endl; // Выводим полученное значение
strcpy(mas_Z[kodS-1].FIO, Stroka); // Присваиваем полученное значение элементу структуры
cout << mas_Z[kodS-1].FIO << endl; // Проверяем
}
for (i=0; i < kol; i++){
fwrite(&mas_Z[i], size, 1, Fz); // Записываем структуру в файл
}
В строке cout << mas_Z[kodS-1].FIO << endl;
выводится новое значение. Но если выводить целиком структуру или записывать в файл, то ничего не сохраняется.
Вопрос
Почему fwrite
, не записывает в файл новое значение элемента структуры? Как можно это исправить и изменить данные в структуре с записью в файл?
Файл у вас открывается с флагами "r+b"
в режиме для чтения, для записи еще необходим флаг w
. Результаты вызова fread
и fwrite
не проверяются, что является ошибкой.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Нужно ввести группуДалее перебрать структура, найти запись с совпадающей группой и вывести её
Работаю на Mac, использую XcodeЯ решил попробовать поработать с библиотекой alut