编写程序将一个指定文件中某一字符串替换为另一个字符串

屎宝宝 2011-11-19 01:26:48
编写程序将一个指定文件中某一字符串替换为另一个字符串。要求:(1)被替换字符串若有多个,均要被替换;(2)指定的被替换字符串,大小写无关。

【输入形式】

给定文件名为filein.txt。从控制台输入两行字符串(不含空格,行末尾都有回车换行符),分别表示被替换的字符串和替换字符串。

【输出形式】

将替换后的结果输出到文件fileout.txt中。

【样例输入】

从控制台输入两行字符串:

in

out

文件filein.txt的内容为:

#include <stdio.h>

void main()

{

FILE * IN;

if((IN=fopen("in.txt","r"))==NULL)

{

printf("Can’t open in.txt!");

return;

}

fclose(IN);

}

【样例输出】

文件fileout.txt的内容应为:

#outclude <stdio.h>

void maout()

{

FILE * out;

if((out=fopen("out.txt","r"))==NULL)

{

prouttf("Can’t open out.txt!");

return;

}

fclose(out);

}

【样例说明】

输入的被替换字符串为in,替换字符串为out,即将文件filein.txt中的所有in字符串(包括iN、In、IN字符串)全部替换为out字符串,并输出保存到文件fileout.txt中。

作业题啊……就剩下这一个了
...全文
4940 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
soilvue 2011-12-06
  • 打赏
  • 举报
回复
怎么感觉楼主的输出都没有在文件中呢?
屎宝宝 2011-11-20
  • 打赏
  • 举报
回复
求C的正解啊~C++明显看不懂啊~
goldbeef 2011-11-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 keiy 的回复:]

for(i=0;i<strlen(s)-l1+1;i++){
p=1;
for(j=0;j<l1;j++){
x=abs(s[i+j]-s1[j]);
if(x==0||x==t) continue;
p=0;}
比较另类的思路,未测试,不知有没有问题
提供思路:
如果是C的话,一般可以先用strlwr或strupr将字串转成小(大)写的,然后用strs……
[/Quote]可以吧,
hongwenjun 2011-11-19
  • 打赏
  • 举报
回复
要求高的,还是 正则 好处理一点
hongwenjun 2011-11-19
  • 打赏
  • 举报
回复

#include <io ->STR<- eam>
#include <f ->STR<- eam>
using namespace std;
int main()
{
f ->STR<- eam fin("main.cpp", f ->STR<- eam::in);
->STR<- ing src = " ->STR<- ";
->STR<- ing target = " ->STR<- ";
->STR<- ing line;
while (getline(fin, line))
{
->STR<- ing::size_type pos = line.find(src); // 查找源字符串
while (pos != ->STR<- ing::npos) // 判断有没找到
{
line.replace(pos, src.size() , target); // 替换字符串
pos = line.find(src, pos + 1); // 查找剩余源字符串
}
cout << line << endl; // 输出替换后的
}
return 0;
}

Process returned 0 (0x0) execution time : 0.016 s
Press any key to continue.



上面的代码 对本身替换后的结果
hongwenjun 2011-11-19
  • 打赏
  • 举报
回复
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
fstream fin("main.cpp", fstream::in);
string src = "str";
string target = " ->STR<- ";
string line;
while (getline(fin, line))
{
string::size_type pos = line.find(src); // 查找源字符串
while (pos != string::npos) // 判断有没找到
{
line.replace(pos, src.size() , target); // 替换字符串
pos = line.find(src, pos + 1); // 查找剩余源字符串
}
cout << line << endl; // 输出替换后的
}
return 0;
}
柯本 2011-11-19
  • 打赏
  • 举报
回复
for(i=0;i<strlen(s)-l1+1;i++){
p=1;
for(j=0;j<l1;j++){
x=abs(s[i+j]-s1[j]);
if(x==0||x==t) continue;
p=0;}
比较另类的思路,未测试,不知有没有问题
提供思路:
如果是C的话,一般可以先用strlwr或strupr将字串转成小(大)写的,然后用strstr查找子串
再用strncpy/strcat替换
另外.这种程序网上很多的.自己搜下
hongwenjun 2011-11-19
  • 打赏
  • 举报
回复
C++ 没压力 ,C 实现起来麻烦点
屎宝宝 2011-11-19
  • 打赏
  • 举报
回复
求助大神啊。。
屎宝宝 2011-11-19
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
FILE *f1,*f2;
char s[1000],s1[100],s2[100];
int i,l1,l2,t,j,x,p;
main()
{
f1=fopen("filein.txt","r");
f2=fopen("fileout.txt","w");
gets(s1);
l1=strlen(s1);
gets(s2);
l2=strlen(s2);
t='a'-'A';
while(1){
if (fgets(s,1024,f1)==NULL) {fclose(f1);fclose(f2);return 0;}
for(i=0;i<strlen(s)-l1+1;i++){
p=1;
for(j=0;j<l1;j++){
x=abs(s[i+j]-s1[j]);
if(x==0||x==t) continue;
p=0;}
if (p) {fprintf(f2,"%s",s2);i+=l1-1;}
else fprintf(f2,"%c",s[i]);
}
for(j=i;j<strlen(s);j++) fprintf(f2,"%c",s[j]);
}
}

这个程序有什么问题么…………我自己编译可以通过但是提交之后不能啊
JieTouLangRen 2011-11-19
  • 打赏
  • 举报
回复
完成这道作业楼主只需要学习:
1 简单文件读写操作
2 学会使用库函数中的字符串查找函数
自己试着去写,遇到问题了过来问
小笨同学 2011-11-19
  • 打赏
  • 举报
回复
正则表达式的强项

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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