c - 如何审查字符数组中的单词?

标签 c arrays string replace

如何在 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/

相关文章:

mysql - C、如何将字符串保存到二进制文件中?

c - 我认为我超出了此过程的可用内存。有人可以看一下并验证吗?

c - 两个函数之间的 Malloc 可访问性

arrays - 如何从我的散列中删除一个 nil 键?

Python - 使用前 2 个元素转换列

string - 如何在 C++ 中调用字符串资源

string - 数据库连接字符串参数污染强化问题

检查数字是否为 a ** b

javascript - 如何在 Knockout 中订阅父对象的子对象

c# - ToCharArray 和 ToArray 之间的区别