我在C工作在Linux上,我試圖給一個結構寫入文件。問題寫結構到文件
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct stud{
char name[20];
char dept[20];
int id;
};
int main()
{
FILE *fptr;
int fwrt;
struct stud s;
printf("enter student name\n");
scanf("%s",s.name);
printf("enter student department\n");
scanf("%s",s.dept);
printf("enter student ID\n");
scanf("%d",&s.id);
fptr = fopen("tiger","wb");
if(fptr == NULL){
perror("error openning file :");
exit(EXIT_FAILURE);
}
fwrt = fwrite(&s,sizeof(struct stud),1,fptr);
if(fwrt == 0){
perror("error writing file :");
exit(EXIT_FAILURE);
}
// fprintf(fptr, "%d", s1->mark);
if(fclose(fptr) == EOF){
perror("error closing file :");
exit(EXIT_FAILURE);
}
}
輸出: 當我打開文件來檢查我越來越:
- 名,但與其他字符
- 部門但與其他字符
- ID我得到一些垃圾值。
請讓我知道解決這個問題的方式。
我不會使用fgets讀取使用fwrite輸出的結構。這是非常危險的。你應該改回它 –