Я использую fwrite, чтобы записать элемент за элементом моей структуры, но я не могу понять, почему в моем двоичном файле сохраняется больше информации (различные пути директорий), кроме только информации из структуры?Я применяю только так, как я пишу в моем двоичном файле.Также я попытался записать ту же структуру в новом текстовом файле, и нет такой проблемы в двоичном файле.
struct student{
int ID;
char name[30];
char secondName[30];
double mark;
}typedef student;
int main()
{
FILE *fp;
struct student *student;
int numberOfStudents;
char *filename;
int numberOfcharacter;
student = (struct student *) malloc(numberOfStudents * sizeof(struct
student));
printf("Enter the number of character of the filename: ");
scanf("%d", &numberOfcharacter);
filename = (char *) malloc(numberOfcharacter * sizeof(char));
if(filename == NULL)
{
perror("Memory error! ");
exit(23);
}
fflush(stdin);
printf("Write the name of your bin file: ");
scanf("%s", filename);
if((fp = fopen(filename, "wb")) == NULL)
{
perror("Error in creating the file! ");
exit(2);
}
for(int i=0; i<numberOfStudents; i++) {
int lenOfName = strlen((student+i)->name);
int lenOfSecondName = strlen((student+i)->secondName);
if(fwrite(&(student+i)->ID, sizeof(struct student), 1, fp) != 1)
{
perror("Error in writing! ");
break;
}
if(fwrite(&lenOfName, sizeof(int), 1, fp) != 1)
{
perror("Error in writing! ");
break;
}
if(fwrite((student+i)->name, sizeof(struct student), lenOfName, fp)
!= lenOfName)
{
perror("Error in writing! ");
break;
}
if(fwrite(&lenOfSecondName, sizeof(int), 1, fp) != 1)
{
perror("Error in writing! ");
break;
}
if(fwrite((student+i)->secondName, sizeof(struct student),
lenOfSecondName, fp) != lenOfSecondName)
{
perror("Error in writing! ");
break;
}
if(fwrite(&(student+i)->mark, sizeof(struct student), 1, fp) != 1)
{
perror("Error in writing! ");
break;
}
}
free(filename);
free(student);
fclose(fp);