C/C++文件操作

 

7.1       C语言文件操作

Fopen():返回文件句柄指针。几种打开模式中,r+w+的区别是,前者对于已存在相同文件名的文件则追加末尾,后者则是删除旧文件建新文件写入数据。

Fclose():传入文件句柄指针。

 

Fscanf():格式化文件输出。

Fprintf():格式化文件输入。

 

Fgets():从文件取得指定长度内字符串,直到遇到换行符或是EOF

Fputs():写入字符串到文件。

Fgetc():从文件取得单个字符,包括/r/nEOF

Fputc():写入单个字符到文件,包括/r/nEOF

 

注意:txt文件中,敲一个回车,会先后放入两个字符/r/n到文件中。另外文件模式中,二进制模式与文本模式的区别在于,若文件是char流,后者将/r/n转换成/n,而前者不做这种转换。

 

Fseek():定位文件指针。

Rewind():重定位文件指针到文件头。

Feof():只有当到了文件尾才返回非零值。

 

Fread():按给定单位逐块读文件。

Fwrite():按给定单位逐块写文件。

 

格式化文件读写

Fscanf()

Fprintf()

对于文本文件、二进制文件打开方式均可用。

 

字符文件读写

Fgets()

Fputs()

Fgetc()

Fputc()

对于文本文件、二进制文件打开方式均可用。

 

直接文件读写

Fread()

Fwrite()

对于以非char形式读写数据,在文本文件、二进制文件打开方式均会有问题。

对于以char形式读写数据,文本文件、二进制文件打开方式均可用。

可看看以下试验

代码:

    FILE *p = NULL;

    char filename[] = "d://it_study//c++_dev//project//file_test1//6.txt";

 

    char co;

    int no;

    printf("********/nr/n");

    if((p = fopen(filename,"r")) == NULL)

        printf("error open/n");

    //

    printf("co/n");

    while(feof(p) == 0)

    {

        if(fread(&co,sizeof(char),1,p) < 1)

             printf("error read/n");

        if(!(co == ' ' || co =='/r' || co == '/n'))

        {

             printf("%c/n",co);

        }

        co = ' ';

    }

    co = ' ';

    //

    printf("co no/n");

    rewind(p);

    if(fread(&no,sizeof(int),1,p) < 1)

        printf("error read/n");

    printf("%d/n",no);

    if(fread(&no,sizeof(int),1,p) < 1)

        printf("error read/n");

    printf("%d/n",no);

    if(fread(&no,sizeof(int),1,p) < 1)

        printf("error read/n");

    printf("%d/n",no);

    no = 0;

    co = ' ';

 

    fclose(p);

    printf("close/n");

 

    printf("********/nrb/n");

    if((p = fopen(filename,"rb")) == NULL)

        printf("error open/n");

    //

    printf("co/n");

    while(feof(p) == 0)

    {

        if(fread(&co,sizeof(char),1,p) < 1)

             printf("error read/n");

        if(!(co == ' ' || co =='/r' || co == '/n'))

        {

             printf("%c/n",co);

        }

        co = ' ';

    }

    co = ' ';

    //

    printf("co no/n");

    rewind(p);

    if(fread(&no,sizeof(int),1,p) < 1)

        printf("error read/n");

    printf("%d/n",no);

    if(fread(&no,sizeof(int),1,p) < 1)

        printf("error read/n");

    printf("%d/n",no);

    if(fread(&no,sizeof(int),1,p) < 1)

        printf("error read/n");

    printf("%d/n",no);

    no = 0;

    co = ' ';

 

    fclose(p);

    printf("close/n");

 

    printf("********/nwb/n");

    if((p = fopen(filename,"wb")) == NULL)

        printf("error open/n");

    //

    printf("co no/n");

    co = 'a';

    fwrite(&co,sizeof(char),1,p);

    no = 1;

    fwrite(&no,sizeof(int),1,p);

    //

 

    fclose(p);

    printf("close/n");

 

stdout输出:

********

r

co

1

a

error read

co no

error read

6365233

error read

6365233

error read

6365233

close

********

rb

co

1

a

error read

co no

error read

6365233

error read

6365233

error read

6365233

close

********

wb

co no

close

 

6.txt输入:

1 a

 

6.txt输出:

a  

UE中十六进制形式查看如下

总结,一般来说,当以文本方式打开时,用格式化文件读写、字符文件读写;当以二进制方式打开时,用直接文件读写,并且以char形式读写数据。

 

注意:试验中是int形式与char形式,也许描述中应该改为非单字符形式与单字符形式。

 

7.2       C++语言文件操作

Fstream:文件读写类,默认是用读/写模式打开。

Ifstream:文件读写类,默认用读模式打开。

Ofstream:文件读写类,默认用写模式打开。

 

<<:写入文件流。

>>:读入文件流。

 

Seekg:定位读指针。

Seekp:定位写指针。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值