0

fp が指すファイルを読み込もうとしていFILE*ますが、ファイルの末尾がどこにあるかを知りたいです。したがってfseek();、ファイルの最後に、structure data.

void printData(FILE *fp)
{
    struct data tmp;
    fseek(fp,0,SEEK_END);
    while(fread(&tmp,sizeof(struct data),1,fp) > 0)
    {
        puts("test2");
        printf("Vorname: %s\n",tmp.vorname);
        printf("Nachname: %s\n",tmp.name);
        printf("Adresse: %s\n",tmp.adresse);

    }
}

これが私の構造の定義方法です:

struct data
{
    char name[30];
    char vorname[20];
    char adresse[50];
};

私の問題は、 while ループが一度も実行されないことです。私は何かを忘れましたか?

4

5 に答える 5

0

fread() is used for reading contents from file not for writing.

Use fwrite() for writing contents to file.

Like:

fwrite(&tmp , 1 , sizeof(struct data) , fp );

Read more about: fread() and fwrite()

于 2013-06-28T08:47:25.460 に答える
0

オフセットを 0 に設定しているため、ファイルの先頭をシークしています。それはあなたがやりたいことのようには聞こえませんが、一方で最後までシークしてから読み取ろうとすると失敗します。 . よくわかりません。:/

fwrite()fread() ではなくを意味していたのでしょうか? コードの残りの部分はI/O のに結果を出力するため、そうではありません。これは、読み取りでは論理的ですが、書き込みでは論理的ではありません。

ファイルが開かれていることや、プログラムを実行したときに何が含まれているかなど、より多くの情報があれば役立ちます。

于 2013-06-28T08:32:22.880 に答える
0

fread の 3 番目の変数 '1' は、実際には読み取る項目の数を示しており、1 つの項目を読み取っているだけです。これについては、fread ドキュメントを参照してください: http://pubs.opengroup.org/onlinepubs/009696899/functions/fread.html

于 2013-06-28T08:34:49.543 に答える