标准IO边读边写文件

来源:互联网 发布:excel统计重复数据 编辑:程序博客网 时间:2024/06/13 01:53

首先以读写方式打开(r+   w+   a+都可以,不过要注意读写位置指针分别指向文件头、文件头、文件尾),一次读一个字符(此时读写位置指针指向此字节后面,判断后,若要转换,移动读写位置指针

fseek(fp,-1L,SEEK_CUR),再写入,由于在C中规定:以上述三种方式打开文件,既可读又可写,但在没有插入fseek()rewind()的情况下,写不可以直接跟在读后面,在没有插入fseek(),rewind()或碰到文件结束的情况下,读不可以直接跟在写后面。所以要转换读写状态。   

#include   <stdio.h>   void   main()   {      char   ch;      int   i=0;      FILE   *fp;      fp=fopen("d:\\tc\\aaa.txt","r+");      if(!fp)      {         printf("can   not   open   the   file!\n");         exit(0);      }      while(!feof(fp))      {         ch=fgetc(fp);         if(ch>='a'&&ch<='z')         {   ch=ch-32;             fseek(fp,-1L,SEEK_CUR);/*向前移动1个字节*/             fputc(ch,fp);             fseek(fp,0L,SEEK_CUR);/*转换读写状态,并不移动*/         }      }      fclose(fp);   }

摘自《UNIX环境高级编程》:当以读和写类型打开一文件时,具有下列限制:

1)如果中间没有fflush、fseek、fsetpos或rewind,则在输出的后面不能直接跟随输入;

2)如果中间没有fseek、fsetpos或rewind,或者一个输出操作没有到达文件尾端,则在输入操作之后不能直接跟随输出;

原创粉丝点击