谁能告诉我这里的错误是什么。我这里用的是二维数组。
#include<stdio.h>
#include<string.h>
int main()
{
char a[100], b[30][30], c[20], d[20];
int i, j=0, k, count=0;
int e[30];
printf("enter a string: ");
gets(a);
printf("enter the word which has to be replaced: ");
gets(c);
printf("enter the word with which it has to be replaced: ");
gets(d);
for(i=0,k=0, e[i]=0; i<strlen(a); i++, k++)
{
if(a[i]==' ')
{
k=0;
j++;
count++;
}
else
{
b[j][k]=a[i];
e[i]++;
}
}
for(i=0; i<j; i++)
{
if(word(b[i], c)==0)
{
for(k=0; k<strlen(d); k++)
{
b[i][k]=d[k];
}
}
}
for(i=0; i<count; i++)
{
for(j=0; j<e[i]; j++)
{
printf("%c", b[i][j]);
}
printf(" ");
}
}
int word(char *a, char *c)
{
int i;
if(strlen(a)==strlen(c))
{
for(i=0; i<strlen(a); i++)
{
if(a[i]!=c[i])
{
return 1;
}
}
}
else
return 2;
return 0;
}
我希望输出的结果是像下面这样的.比如说,我的意思是我想只替换那个特定的单词,只要在字符串中出现多少次,比如这里,单词good。
enter a string: vicky is a good boy
enter the word which has to be replaced: good
enter the word with which it has to be replaced: bad
vicky is a bad boy
我的意思是我只想替换那个特定的单词 只要它在字符串中出现的次数多就可以了 比如这里,单词good. 谁能帮我找出错误,或者帮我找到其他方法。
你不应该使用 gets
,这是很危险的。为什么get函数如此危险,以至于不应该被使用?.
你应该使用 fgets
读来 stdin
而不是。
在 word
函数,你用 strlen
funciton。
if(strlen(a)==strlen(c))
但在主函数中,你把它调用为:
if(word(b[i], c)==0)
b[i]
是字符数组,但你没有添加空字符。\0
在每个词的最后。所以 strlen
不会像你想象的那样工作。
在你的代码中,你把字符串 c
由 d
. 你不更新的值 e
阵列.我想。e[i]
应该是。
e[i] = strlen(d);
我觉得你没有用一些标准的函数来处理字符串,比如说,对你的程序非常有用。
strcmp
来比较字符串和字符串。
strstr
找出字符串中的单词。
如果你在google中搜索,你可以有一大堆的代码用于你的情况。
另一个。在C语言中替换字符串中的单词