读书人

关于fputc()函数疑问,该怎么处理

发布时间: 2012-03-07 09:13:51 作者: rapoo

关于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);}
[解决办法]
探讨

试过了,可以了!厉害!
如果想不转换指针类型,即不用rewind和fseek来切换,
有什么办法吗?

引用:
以读写方式打开文件,读写转换要有一定的操作, 例如可以用rewind函数.

C/C++ code

#include"stdio.h"
#include "stdlib.h"

void main()
{
FILE ……

读书人网 >C语言

热点推荐