0

次のコードを試して、構造をファイルに書き込みました。

#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 です。何が問題なのですか?

4

1 に答える 1

3

これは、整数55文字として読み取るためであり、ASCII アルファベットでは値 55 は文字と同じ'7'です。

を使用して、記述と同じ方法で構造を読み取る必要がありますfread

于 2013-06-29T11:33:33.673 に答える