次のコードを試して、構造をファイルに書き込みました。
#include<stdio.h>
struct record
{
char name[80];
int roll;
};
int main( )
{
FILE* p=NULL;
int length=0;
char* file="abcd.txt";
struct record r1={"abcd",55};
p=fopen(file,"w");
if (p==NULL) {
printf("Error in opening file");
}
length=sizeof(r1);
fwrite(&r1,length,1,p);
fclose(p);
printf("Written successfully\n");
free(r1);
}
を使用して次のファイルを読み込もうとすると:
#include<stdio.h>
main( )
{
int c;
FILE* p=NULL;
p=fopen("abcd.txt","r");
if (p) {
while ((c=getc(p)) != EOF)
putchar (c);
fclose(p);
}
}
最後のプログラムを実行すると、出力される値は次のとおりです。
abcd 7
最初のフィールド「abcd」は正しく出力されますが、ファイルに 55 を書き込もうとしましたが、次に出力される値は 7 です。何が問題なのですか?