文件大小写转换问题,百分想送

iamiking 2003-11-25 09:01:56
各位大侠,我在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);
是个死循环了

各位大侠帮忙
问题解决立刻给分

...全文
189 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamiking 2003-11-25
  • 打赏
  • 举报
回复
大侠能说的详细点吗?
FmzHxj 2003-11-25
  • 打赏
  • 举报
回复
本人以为还是这样做比较好:以可读写方式打开文件,得到文件大小,用一个相应长度BYTE *buffer缓冲区来保存转换后数据,然后把buffer写到文件,就可以不用临时文件了。
vcforever 2003-11-25
  • 打赏
  • 举报
回复
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.txt

FILE * ff;
ff=fopen("a.txt","w");
程序运行到上一步,文件的内容就被清空了
iamiking 2003-11-25
  • 打赏
  • 举报
回复
重新说一下
我想把.htm的文件中的所有大写字符
替换为小写
各位大侠有没有好的办法
最好是打开同一个文件
既读又写
通过文件指针判断文件读写的位置
huanyun 2003-11-25
  • 打赏
  • 举报
回复
不是这个问题的 什么文件都可以打开
iamiking 2003-11-25
  • 打赏
  • 举报
回复
对了
各位大侠
不号意思
我是想把.htm中的大写换成小写
是不是vc不认.htm啊
cmsbai 2003-11-25
  • 打赏
  • 举报
回复
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();
}

lingfeng8888 2003-11-25
  • 打赏
  • 举报
回复
把fseek(ff,-1,1);改为
fseek(ff,-1,SEEK_CUR);试试
huanyun 2003-11-25
  • 打赏
  • 举报
回复
用DeleteFile("c.txt");
huanyun 2003-11-25
  • 打赏
  • 举报
回复
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);

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧