悬赏100分!求高手帮忙改一道c\c++编程题!进来看!

来源:百度知道 编辑:UC知道 时间:2024/05/16 07:33:12
题目是:一篇英文文章存放在文件a.txt中,请将其中的单词word1替换为word2(替换与被替换单词都由键盘输入),需按区分大小写及不区分大小写两种情况讨论。
有一个对此题目的程序是:#include <stdio.h>
#include <string.h>
// 缓冲区, 用来放读取的内容
#define BUFFER_SIZE 1024
// 部分大小写的字符串比较
int MyCmp( const char *sz1, const char *sz2, int nLen )
{
char cMax, cMin;
for( ;nLen--; sz1++, sz2++ )
{
if( *sz1 == *sz2 )
continue;
cMax = *sz1 >= *sz2 ? *sz1 : *sz2;
cMin = *sz1 + *sz2 - cMax;
if( (cMax <= 'z' && cMax >= 'a') && (32 == cMax - cMin) )
continue;
return *sz1 - *sz2;
}
return 0;
}

int main()
{
// 文件指针
FILE *pFileS, *pFileD;
// 输入缓冲; 要替换的单词; 新的单词
char buffer[BUFFER_SIZE], wordOld[64] = {0}, wordNew[64] = {0};
// 缓冲区实际大小; 缓冲区操作标志; 每次读取的字节数; 要替换的单词长度; 新单词的长度; 区分大小写标志
int nTop = 0, nPoint, nRead, nOldLen, nNewLen, bDiv;

puts("输入两个词");
scanf("%63s%63

pFileS = fopen("a.txt", "rb");
pFileD = fopen("aa.txt", "wb");

这里 打开的文件 换一下pFileD = fopen("aa.txt", "wb"); 换成
pFileD = fopen("a.txt", "wb");

貌似问题问重复了。

这是个很简单的问题啊,我当是啥呢?哈哈

只要在程序的最后,“return 0;”之前,加两句如下系统调用,就可以了:
system("del a.txt");
system("ren aa.txt a.txt");
这两句是调用系统的命令,把文件a.txt删除掉,把aa.txt改名为a.txt
注意,要包含头文件:
#include <windows.h>

它以前的程序,能处理很大的文件,也是超出缓冲区BUFFER_SIZE 1024大小的文件,因为它是分段处理的,这个程序写的很好!
当然,可以把它这种分段读取,分段处理,又分段保存的方式,修改成一次读取,处理完毕后,一次保存,这样能达到楼主的目的,但对文件特别大的时候,有可能回失败,因为不一定能申请到文件那么大的内存。

将a.txt文件删除,将aa.txt文件名修改为a.txt 这是最可行的方法,当然,改文件名和删除文件有其他函数可以做到。

int main(){
.............
system("del a.txt");
system("ren aa.txt a.txt");
return 0;
}

如果文件不是很大,可以先转换缓存到buff,然后一次性写入原文件;
如果文件很大,可以把转换后的文件,内容读出来再写回原来的文件;
由于文件操作的有