c语言替换txt文件中某个单词
答案:2 悬赏:30
解决时间 2021-02-03 21:32
- 提问者网友:美人如花
- 2021-02-03 15:51
写一个叫filter的程序,要求读取一个名为input.txt的文件,当用户在终端输入./filter A B <input.txt时,能把input.txt里所有的A都换成B,A和B是任意两个单词,区分大小写,比如Apple和apple是两个不一样的词。如果用户没有说明要更换什么词,就显打印一条消息说需要两个变量。谢谢!
最佳答案
- 二级知识专家网友:单身小柠`猫♡
- 2021-02-03 16:25
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main(int argc,char* argv[]){//从主函数的参数中获取命令行参数
string str;
//判断参数数量是否满足要求
if(argc < 3){
cerr << "Fatal error: expect two words in the command line." << endl;
return 1;
}
bool flag = true;
int length = strlen(argv[1]);
//进行替换操作
while(getline(cin,str)){
for(string::size_type t = 0;t < str.size();t += length){
if((t = str.find(argv[1],t)) == str.npos){
break;
}
str.replace(t,length,argv[2]);
}
if(flag){
cout << str;
flag = false;
}else{
cout << '\n' << str;
}
}
return 0;
}
编译:
g++ filter.cc -o filter
运行:
cat input.txt | ./filter A B > output.txt
#include <string>
#include <cstring>
using namespace std;
int main(int argc,char* argv[]){//从主函数的参数中获取命令行参数
string str;
//判断参数数量是否满足要求
if(argc < 3){
cerr << "Fatal error: expect two words in the command line." << endl;
return 1;
}
bool flag = true;
int length = strlen(argv[1]);
//进行替换操作
while(getline(cin,str)){
for(string::size_type t = 0;t < str.size();t += length){
if((t = str.find(argv[1],t)) == str.npos){
break;
}
str.replace(t,length,argv[2]);
}
if(flag){
cout << str;
flag = false;
}else{
cout << '\n' << str;
}
}
return 0;
}
编译:
g++ filter.cc -o filter
运行:
cat input.txt | ./filter A B > output.txt
全部回答
- 1楼网友:单身小柠`猫♡
- 2021-02-03 16:46
#include
#include
main()
{
file *fp,*fw;
char line[256]={0},total[1024]={0};
fp=fopen("data.txt","r");
while (fgets(line,256,fp))
{
if (strcmp(line,"you\n")==0)
{
strcpy(line,"they\n");
}
strcat(total,line);
}
fclose(fp);
fw=fopen("data.txt","w");
fprintf(fp,"%s",total);
fclose(fw);
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |