关于fputc()函数疑问
C盘根目录一文件:in.txt,里面预先写入abcdef;
用文件指针逐个字符读出文件中的内容,读到(ch>='b' && ch<='d')时,调用fputc('z',fp);
则程序运行结束之后,想象中的结果为: abzdzf,但是打开文件一看,仍然是abcdef
不知何故,望高手点拨
- C/C++ code
#include"stdio.h"#include "stdlib.h"void main(){ FILE * fp=NULL; int ch=0; fp=fopen("c:\\in.txt","r+"); if(fp==NULL) { puts("file open error!"); exit(1); } while(ch>=0 ) { ch = fgetc(fp); if(ch>='b' && ch<='d') { fputc('z',fp); } } fclose(fp);}[解决办法]
以读写方式打开文件,读写转换要有一定的操作, 例如可以用rewind函数.
- C/C++ code
#include"stdio.h"#include "stdlib.h"void main(){ FILE * fp=NULL; int ch=0; long of; long i; fp=fopen("d:\\in.txt","r+"); if(fp==NULL) { puts("file open error!"); exit(1); } setbuf(fp, NULL); while(ch>=0) { ch = fgetc(fp); if(ch>='b' && ch<='d') { of = ftell(fp); rewind(fp); fseek(fp,of,SEEK_SET); fputc('z',fp); of = ftell(fp); rewind(fp); fseek(fp,of,SEEK_SET); } } fclose(fp);}
[解决办法]