fread();fwriter();fscanf()

一、fread函数和fwrite函数

1)函数功能

     用来读写一个数据块。

2)一般调用形式

      fread(buffer,size,count,fp);

      fwrite(buffer,size,count,fp);

3)参数说明

   (1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。

   (2)size:要读写的字节数;

   (3)count:要进行读写多少个size字节的数据项;

   (4)fp:文件型指针。

 注意:1、 完成次写操(fwrite())作后必须关闭流(fclose());

            2 、完成一次读操作(fread())后,如果没有关闭流(fclose()),则指针(FILE * fp)自动向后移动前一次读写的长度,不关闭流继续下一次读操作则接着上次的输出继续输出。

二、fprintf函数和fscanf函数

       fprintf、fscanf的读写对象不是终端而是磁盘文件;
       调用方式为:int   fprintf(文件指针,格式字符串,输出表列 )返回值:返回实际输出的字符数,
                            操作不成功返回EOF
                            int fscanf(文件指针,格式字符串,输入表列 )返回值:返回输入的数据个数,

                            操作不成功返回EOF
        fprintf(fp, "%d, %6.2f",   i, t)  将整型变量 i 和实型变量 t 的值按%d和%6.2f的格式输出到fp所指向的文件中;          若i=3,t=4.5,则输出到磁盘中的格式为:3,    4.50相应的,从文件中读取数据时,则应用:

        fscanf(fp, "%d, %f",   &i, &t)

 

        在运用fprintf与fscanf时,在向文件输出数据及从文件读取数据时,分隔符应该相一致。

 

        三、使用fread和fwrite的优点就是二进制的读取是最快的。但是它们有缺陷,就是在

读取的时候 while(!feof(fp)) 不精确,往往会发现它多循环了一次。因为feof

()是根据剩余字符来判断是否文件结尾的,而文件的结尾标识符是'/0'是两个字

节,在读取'/'的时候feof()还是为false只有读取完'/0'的时候feof()==true。

致使产生多余的循环(如果使用while(!feof(fp))的话)。使用fprintf和fscanf

,因为这两个函数具有输入/输出的格式限制,即使在读取'/0'处有多余的循环,

但由于其不满足输入/输出格式,所以多余的循环被屏蔽掉。

最好就是这样:"%d/t%d/t" 这样的每个数字后面都是有限制的,这样就可以起到

很好的屏蔽作用。^^

          

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值