首页 > C/C++语言 > C/C++数据结构 > fread and fwrite
2010
01-25

#include <stdio.h>
int main()
{
    FILE
*fp;
   
int text=987654321;//内存中(10001101 000101110 01111011 01011100)-(177 104 222 58)
    int text1=0,text2=0,text3=0,text4=0;
   
if((fp=fopen(stu_test,w+))==NULL)
    {
        printf(
cannot open the file!\n);
       
return 0;
    }
    fwrite(
&text,sizeof(int),1,fp);
    rewind(fp);
    fseek(fp,
0,0);
    fread(
&text1,1,1,fp);
    printf(
%d\n,text1);
    fseek(fp,
1,0);
    fread(
&text2,1,1,fp);
    printf(
%d\n,text2);
    fseek(fp,
2,0);
    fread(
&text3,1,1,fp);
    printf(
%d\n,text3);
    fseek(fp,
3,0);
    fread(
&text4,1,1,fp);
    printf(
%d\n,text4);
    fclose(fp);
   
return 0;
}

输出结果是正确的,不过为什么要重新定义变量,用fread读给原来的text却不行呢?而需要重新定义text1,2,3…


fread and fwrite》有 4 条评论

  1. mhjerry 说:

    #include <stdio.h>
    int main()
    {
        FILE
    *fp;
       
    int text=987654321;//内存中(10001101 000101110 01111011 01011100)-(177 104 222 58)
        int text1=0,text2=0,text3=0,text4=0;
       
    if((fp=fopen(stu_test,w+))==NULL)
        {
            printf(
    cannot open the file!\n);
           
    return 0;
        }
        fwrite(
    &text,sizeof(int),1,fp);
        rewind(fp);
        fseek(fp,
    0,0);
        fread(
    &text1,1,1,fp);
        printf(
    %d\n,text1);
        fseek(fp,
    1,0);
        fread(
    &text2,1,1,fp);
        printf(
    %d\n,text2);
        fseek(fp,
    2,0);
        fread(
    &text3,1,1,fp);
        printf(
    %d\n,text3);
        fseek(fp,
    3,0);
        fread(
    &text4,1,1,fp);
        printf(
    %d\n,text4);
        fclose(fp);
       
    return 0;
    }

    输出结果是正确的,不过为什么要重新定义变量,用fread读给原来的text却不行呢?而需要重新定义text1,2,3…

  2. Linux_C 说:

    void rewind(FILE * stream);

    相当于调用fseek(steam,0,SEEK_SET);
  3. Linux_C 说:

    设一个n接受你fwrite 的返回值,然后读的时候直接就读n个字节、、、

留下一个回复