私は 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 ガベージ値を取得します。
この問題を解決する方法を教えてください。