如何在 char 数组中查找单词并使用通配符 (*) 对其进行审查?
我尝试查找该词第一次出现的位置,但失败了。我已经尝试过这个,但它也不起作用。我是新手,我已经尝试了 5 个小时。
int main()
{
int w,q;
char l,m;
char *arr, *swear;
int i,a,t,k,z;
printf("Enter a word which is not allowed.");
scanf("%s", swear);
printf("Now enter a word.");
scanf("%s", arr);
for(a=0; swear[a]!='\0'; ++a); //finding length of swear
for(t=0;arr[t]!='\0';t++); // finding length of arr
for(i=0,k=0;k<t & i<t;i++,k++)
{
arr[i]=l;
swear[k]=m;
if(strstr(swear,arr))
arr[i]='*';
else
break;
}
for(z=0;z<t;z++)
{
printf("%c",arr[z]);
}
return(0);
}
最佳答案
因此,您希望使用由 '*'
组成的等长字符串覆盖所有出现的字符串。为此,您需要迭代地获取指向字符串出现次数的指针,并且还需要其长度来了解必须使用多少个 '*'
。
size_t swearLength = strlen(swear); // swear is assumed null-terminated
char *here = arr;
while ((here = strstr(here, swear)) {
memset(here, '*', swearLength);
here += swearLength; // to avoid searching what's already censored
}
strstr
如果找不到 swear
将返回 null,因此循环将终止
关于c - 如何审查字符数组中的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35864779/