永发信息网

【C语言】用一个单词替代给定字符串中的某个单词(注意单词包含多个字符)。下面的程序哪儿错了?

答案:2  悬赏:40  手机版
解决时间 2021-03-17 03:31
#include
#include
void replace(char a[],char b[],char c[]);
int place(char a[],char b[]);
void main()
{
char a[80],b[80],c[80];
printf("Please input the text.\n");
gets(a);
printf("Which word do you want to replace?\n");
scanf("%s",b);
printf("Use which word to replace it?\n");
scanf("%s",c);
replace(a,b,c);
puts(a);
}
void replace(char a[],char b[],char c[])
{
int i,p;
char a1[80],a2[80];
p=place(a,b);
for(i=0;i a1[i]=a[i];
for(i=p+strlen(b);i a2[i]=a[i];
strcat(strcat(a1,c),a2);
}
int place(char a[],char b[])
{
int p,i;
char c[80];
for(p=0;p {
for(i=0;i {
c[i]=a[p++];
c[strlen(b)]='\0';
}
if(strcmp(b,c)==0)
{
return p-2;
break;
}
if(p==strlen(a)-1)
{
printf("ERROR!\n");
exit(0);
}
}
}
最佳答案
#include
#include
void replace(char a[],char b[],char c[]);
int my_find(char* source, char* target)
{
int i,j;
int s_len=strlen(source);
int t_len=strlen(target);
if(t_len>s_len)
{
return -1;
}
for(i=0;i<=s_len-t_len;i++)
{
j=0;
int flag=1;
if(source[i]==target[j])
{
int k,p=i;
for(k=0;k {
if(source[p]==target[j])
{
p++;
j++;
continue;

}
else
{
flag=0;
break;
}
}
}
else
{
continue;
}
if(flag==1)
{
return i;
}
}
return -1;
}
void main()
{
char a[80],b[80],c[80];
printf("Please input the text.\n");
gets(a);
printf("Which word do you want to replace?\n");
scanf("%s",b);
printf("Use which word to replace it?\n");
scanf("%s",c);
replace(a,b,c);
puts(a);
}
void replace(char a[],char b[],char c[])  
{
int len_a=strlen(a);
int len_b=strlen(b);
int len_c=strlen(c);
int find_pos;
char s[80]={'\0'};
find_pos=my_find(a,b);
if(find_pos==-1)
{
printf("\n未找到要替换的单词!");
exit(0);
}
int i,j=0;
for(i=0;i {
s[j++]=a[i];
}
for(i=0;i {
s[j++]=c[i];
}
for(i=find_pos+len_b;i {
s[j++]=a[i];
}
strcpy(a,s);
}
全部回答
你这个字符串中的单词是用什么符号分隔的?空格,逗号,还是分号?提问题要说的清楚一点,不然别人帮不了你。如果是有分隔符的那你就用substring函数(时间长了忘记c语言里用的是substr还是substring)每次取一个字符,取到分隔符了就把单词个数加一,并且在每取一个字符的时候把单个单词的字符数+1,取到分隔符的时候把单个单词字符数输出,清空这个变量用于计算下一个单词的字符个数。至于你说的字符串长度,分隔符算不算进内?如果算直接用length方法就行了,如果不算就在上面取字符的时候每取一个加一次,取到分隔符不加。 如果说你的字符串里是没有分隔符的,不好意思做不了。因为要用到单词库,智能比对,数据库,遍例等等。非常庞大的工程不是你我做的了的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
啤酒里面加点盐能祛斑吗谢谢
白草坡村怎么去啊,有知道地址的么
我在私人厂里面上班,然后现在不想干了,老板
元素周期表带拼音的
鸿阳食品商店地址在什么地方,想过去办事
我的mac一次删了30g左右的文件,清倒废纸篓,
心理学之父与教育心理学之父是谁
电表厂的电表是直接卖给电力局的吗?
两天没有聊天了。找个什么话题重新开始聊
拉好几次大便,可是都有点拉稀的感觉
怎么样才能测电路通不通
税控盘清盘时提示检测到征期内有未上传已开发
protest against是什么意思
马路北地址在哪,我要去那里办事
为什么负正得负,正正得正,负负得正,正负得
推荐资讯
古今中外人的寿命最高是多少?
锦绣足浴会所在什么地方啊,我要过去处理事情
成人用品网店加盟怎么做吗
求: 春天到来的精美诗句,词句,??
我安装会声会影提示运行videostudio需要200mb
读花卉专业,有什么要求
诚信精品车行地址在哪,我要去那里办事
日产颐达汽车机油尺加到上线多一点了可以吗?
德国战车乐队现在的状况谁知道?出新专辑了没
万好路/延寿北街(路口)这个地址在什么地方,
不太懂小埋的变身设定,这应该怎么理解
特色水煎包地址在哪,我要去那里办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?