【C语言】用一个单词替代给定字符串中的某个单词(注意单词包含多个字符)。下面的程序哪儿错了?
解决时间 2021-03-17 03:31
- 提问者网友:却不属于对方
- 2021-03-16 21:27
#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);
}
}
}
最佳答案
- 五星知识达人网友:由着我着迷
- 2021-03-16 22:23
#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);
}
全部回答
- 1楼网友:白昼之月
- 2021-03-16 22:30
你这个字符串中的单词是用什么符号分隔的?空格,逗号,还是分号?提问题要说的清楚一点,不然别人帮不了你。如果是有分隔符的那你就用substring函数(时间长了忘记c语言里用的是substr还是substring)每次取一个字符,取到分隔符了就把单词个数加一,并且在每取一个字符的时候把单个单词的字符数+1,取到分隔符的时候把单个单词字符数输出,清空这个变量用于计算下一个单词的字符个数。至于你说的字符串长度,分隔符算不算进内?如果算直接用length方法就行了,如果不算就在上面取字符的时候每取一个加一次,取到分隔符不加。
如果说你的字符串里是没有分隔符的,不好意思做不了。因为要用到单词库,智能比对,数据库,遍例等等。非常庞大的工程不是你我做的了的
我要举报
大家都在看
推荐资讯