一个简单的C++程序能对txt文本文件里面的指定数据进行删除和修改
2个回答
展开全部
//用otr替换nFileName里的str
void Replase(char *nFileName,char *str,char *otr)
{
int len;
int i;
FILE *fp1,*fp2;
len=strlen(str);
char buf[len];
fp1=fopen(nFileName,"rb");
if(NULL==fp1) return;
fp2=fopen("temp.dat","wb");//临时文件
fread(buf,len,1,fp1); //先读和替换字串一样多的字符
if(feof(fp1)) return; //如果此时文件结束说明文件太小.
while(1)
{
if(memcmp(str,buf,5)) //如果相同,需要替换
{
fwrite(otr,strlen(otr),1,fp2);//将替换的内容写如临时文件
fread(buf,len,1,fp1); //重新读替换字串一样多的字符
}
else //不同的情况不需要替换
{
fputc(buf[0]); //输出第一个字符
for(i=0;i<len-1;i++) //后面的字符往前移
buf[i]=buf[i+1];
buf[len-1]=fgetc(fp1); //读一个字符补满
}
if(feof(fp1)) //如果此时检测到文件结束
{
fwrite(buf,strlen(buf),1,fp2);//写入剩余的字符
break; //退出循环.
}
}
fclose(fp1);
fclose(fp2);
}
void Replase(char *nFileName,char *str,char *otr)
{
int len;
int i;
FILE *fp1,*fp2;
len=strlen(str);
char buf[len];
fp1=fopen(nFileName,"rb");
if(NULL==fp1) return;
fp2=fopen("temp.dat","wb");//临时文件
fread(buf,len,1,fp1); //先读和替换字串一样多的字符
if(feof(fp1)) return; //如果此时文件结束说明文件太小.
while(1)
{
if(memcmp(str,buf,5)) //如果相同,需要替换
{
fwrite(otr,strlen(otr),1,fp2);//将替换的内容写如临时文件
fread(buf,len,1,fp1); //重新读替换字串一样多的字符
}
else //不同的情况不需要替换
{
fputc(buf[0]); //输出第一个字符
for(i=0;i<len-1;i++) //后面的字符往前移
buf[i]=buf[i+1];
buf[len-1]=fgetc(fp1); //读一个字符补满
}
if(feof(fp1)) //如果此时检测到文件结束
{
fwrite(buf,strlen(buf),1,fp2);//写入剩余的字符
break; //退出循环.
}
}
fclose(fp1);
fclose(fp2);
}
追问
。。。 看不懂 可不可以编个运行的例子 谢谢
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询