C语言rewind()函数:将文件指针重新指向文件开头

rewind()函数用于将文件指针移回文件开头,清除错误和EOF标志。在写入文件后,使用rewind()可以覆盖原有内容。例如,先写入www.dotcpp.com,然后rewind(),再写入12345678,会替换原来的数据。
摘要由CSDN通过智能技术生成

        rewind()函数用于将文件指针重新指向文件的开头,同时清除和文件流相关的错误和eof标记,相当于调用fseek(stream, 0, SEEK_SET),其原型如下:

                void rewind(FILE * stream);

【参数】stream为已打开文件的指针。

        注意:准确的说,这里的指针不是文件指针stream,而是文件内部的位置指针,随着对文件的读写文件的位置指针(指向当前读写字节)向后移动。而文件指针是指向整个文件,如果不重新赋值文件指针不会改变。

        文件指针FILE *stream中,包含一个读写位置指针char *_nextc,它指向下一次文件读写的位置。其结构如下:

typedef struct

{

        int _fd; // 文件号

        int _cleft; // 缓冲区中剩下的字节数

        int _mode; // 文件操作模式

        char * _nextc; // 下一个字节的位置

        char * _buff; // 文件缓冲区位置

}        FILE;

        每当进行一次读写后,该指针自动指向下一次读写的位置。当文件刚打开或创建时,该指针指向文件的开始位置。可以用函数ftell( )获得当前的位置指针,也可以用rewind()/fseek()函数改变位置指针,使其指向需要读写的位置。

【实例】读取文件的数据后再回到开头重新写入。

#include<stdio.h>
#include <stdlib.h>
 int main ()
{
   FILE *fp;
   char str[] = "www.dotcpp.com";
   char second[] = "12345678";
   fp = fopen( "dotcpp.txt" , "w" );
   fwrite(str, sizeof(str) ,1, fp );
     
  // rewind(fp); 
  //  fwrite(second, sizeof(str) ,1, fp );

   fclose(fp);
   return(0);
}

fopen函数打开文件后,通过fwrite函数向文件中写入数据。运行结果如下:

 使用rewind函数将文件指针重新指向文件头时,再调用fwrite函数向文件中写入数据,将会覆盖之前的数据。示例代码如下:

#include<stdio.h>
#include <stdlib.h>
 int main ()
{
   FILE *fp;
   char str[] = "www.dotcpp.com";
   char second[] = "12345678";
   fp = fopen( "dotcpp.txt" , "w" );
   fwrite(str, sizeof(str) ,1, fp );
    
   rewind(fp);
  
   fwrite(second, sizeof(str) ,1, fp );
   
   fclose(fp);
   return(0);
}

运行结果如下所示:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值