2

次のコードでは、 (0 である)tmp FILE *の前の位置が保持されません。fp実際fpに使うと変化しますfseek()

出力:

fp=0 fp=40 tmp=40

tmp元の位置を維持するようにするにはどうすればよいですか?

main()
{
        FILE *fp,*tmp;
        char *name;

        name=getfilename();

        if((fp=fopen(name,"wb"))==NULL)
        {
                puts("\n CAN'T OPEN FILE FOR SAVING...\n");
                return ;
        } 

        printf("fp=%ld",ftell(fp));

        tmp=fp;

        fseek(fp,sizeof(int)*10,SEEK_SET);

        printf("fp=%ld tmp=%ld",ftell(fp),ftell(tmp));
}
4

1 に答える 1

2

どちらのポインタも同じ FILE 構造を指しています。必要に応じて、ファイルを 2 回開くこともできます。その場合、ポインターは完全に独立しています。

于 2014-07-17T15:14:58.447 に答える