读入一个文本文件中的字符串,对给定的patten进行甄别并修改。
利用边甄别,边转换,边写入的办法实现
方法:
1. 把原文件改名,然后新建一个与原文件名相同的文件(目的文件),然后读取原文件,转换后写入目的文件
2. 最好同时对同一个文件进行读写操作,这样往原文件中写入数据会使原文件中数据丢失(除非是a方式打开)。如果非要这么做,那应先把文件中的数据全读到内存中(内存要能满足需要),然后在内存中对文件进行修改,再写回原文件。
3.
以读写方式打开(r+ w+ a+都可以,不过要注意读写位置指针分别指向文件头、文件头、文件尾);
一次读一个字符(此时读写位置指针指向此字节后面,判断后,若要转换,移动读写位置指针fseek(fp,-1L,SEEK_CUR),再写入;
由于C规定:以上述三种方式打开文件,既可读又可写,但:
(1) 在没有插入fseek()或rewind()的情况下,写不可以直接跟在读后面;
(2) 在没有插入fseek()或rewind()或碰到文件结束的情况下,读不可以直接跟在写后面.
所以要转换读写状态。
举例:
#include
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);
}
阅读(2846) | 评论(0) | 转发(0) |