各位大侠,我在VC里面编程
想把一个文件里面的所有大写字符都转换成小写 FILE *fp1,*fp2;
char c;
CString file="a.txt";
fp1=fopen(file,"r");
fp2=fopen("b.txt","w");
while((c=fgetc(fp1))!=EOF)
fputc(tolower(c),fp2);
fclose(fp1);
fclose(fp2);
if (rename(file,"c.txt")!=0)
AfxMessageBox("aaaa");
rename("b.txt",file);
remove("c.txt");
最后的c.txt删不掉
后来我想用打开一个文件读写的方法 FILE * ff;
ff=fopen("a.txt","w");
if(ff == NULL) return 0;
char c;
while(!feof(ff)){
c=fgetc(ff);
fseek(ff,-1,1);
fputc(tolower(c),ff);
}
fclose(ff);
是个死循环了各位大侠帮忙
问题解决立刻给分

解决方案 »

  1.   

    FILE * ff;
    ff=fopen("a.txt","w");
    if(ff == NULL) return 0;
    char c;
    while(!feof(ff)){
    c=fgetc(ff);
                      fseek(ff,-1,SEEK_CUR);
                      fputc(tolower(c),ff);
                      fseek(ff,1,SEEK_CUR); }
    fclose(ff);
      

  2.   

    把fseek(ff,-1,1);改为
    fseek(ff,-1,SEEK_CUR);试试
      

  3.   

    while(!feof(ff)){
    c=fgetc(ff);
    fseek(ff,-1,1);
    fputc(tolower(c),ff);
                    }
    又读又写,当然文件不会到头,所以是死循环。
    最好在VC环境下用CFile类进行操作。
    char *buffer;
    CString ofilename="a.txt";
    CString dfilename="b.txt";
    CFile ofile(ofilename,CFile::modeRead);
    CFile dfile(dfilename,CFile::modeWrite);
    int flongth=ofile.GetLongth();
    buffer=new char[flongth];
    ofile.ReadHuge(buffer,flongth);
    while(int i=0;i<flongth;i++)
    {
            char c=buffer[i];
            buffer[i]=tolower(c);
     }
    dfile.WriteHuge(buffer,flongth);
    ofile.Close();
    CFile::Remove( ofilename );
    dfile.Rename(ofilename);
    dfile.Close();
    }
      

  4.   

    对了
    各位大侠
    不号意思
    我是想把.htm中的大写换成小写
    是不是vc不认.htm啊
      

  5.   

    重新说一下
    我想把.htm的文件中的所有大写字符
    替换为小写
    各位大侠有没有好的办法
    最好是打开同一个文件
    既读又写
    通过文件指针判断文件读写的位置
      

  6.   

    FILE *fp1,*fp2;
             char c;
    CString file="a.txt";
    fp1=fopen(file,"r");
    fp2=fopen("b.txt","w");
    while((c=fgetc(fp1))!=EOF)
    fputc(tolower(c),fp2);
    fclose(fp1);
    fclose(fp2);
    if (rename(file,"c.txt")!=0)
    AfxMessageBox("aaaa");
    rename("b.txt",file);
    remove("c.txt");
    上面的代码我测试了,可以删除c.txt文件啊,最后的c.txt就是开始时候的b.txtFILE * ff;
    ff=fopen("a.txt","w");
    程序运行到上一步,文件的内容就被清空了
      

  7.   

    本人以为还是这样做比较好:以可读写方式打开文件,得到文件大小,用一个相应长度BYTE *buffer缓冲区来保存转换后数据,然后把buffer写到文件,就可以不用临时文件了。