Я создаю массив из 50 структур примерно так и считываю его в двоичный файл.Когда я затем пытаюсь распечатать его, структура кажется пустой для первых 24 элементов, но потом начинает вести себя странно (печатать мусор).В частности, я хотел бы, чтобы идентификатор был равен 0, поскольку я, скорее всего, буду использовать его для тестирования.Если не считать уменьшения размера моей структуры, я ошеломлен.
Я создаю двоичный файл примерно так:
#include<stdio.h>
#include<stdlib.h>
struct record
{
int id;
char name[40];
char email[50];
char course[10];
int grade;
};
int main ();
{
struct record tempadd[50];
FILE *in = fopen("records.bin", "ab");
fwrite(tempadd, sizeof(tempadd), 1, in);
fclose(in);
}
Я печатаю запись с этим кодом:
#include<stdio.h>
#include<stdlib.h>
struct record
{
int id;
char name[40];
char email[50];
char course[10];
int grade;
};
int main ()
{
struct record record[50];
FILE *in = fopen("records.bin", "rb");
fread(record, sizeof(record), 1, in);
int i;
for (i=0; i<50; i++)
{
printf("Student ID: %d ", record[i].id);
printf("Name: %s ", record[i].name);
printf("Email: %s ", record[i].email);
printf("Course: %s ", record[i].course);
printf("Grade: %d\n", record[i].grade);
}
fclose(in);
}
Я ожидаю 50 строк:
Student I: 0 Name: Email: Course: Grade: 0
Вместо этого я вижу много строк мусора, таких как:
Student ID: 1724372348 Name: = Email: = Course: Grade: