C - 用字符串替换char

Mik*_*rds 0 c

我正在编写一个对文本进行编码的程序,以便将其放入URL中.我让用户输入一个字符串,如果它包含特殊字符(#,%,&,?等),则用相应的字符代码(%23,%25,%26,%3F等)替换它们.问题是特殊字符的长度为1,代码长度为3.代码最终替换特殊字符后的字符.这是我用来替换的代码.

char *p = enteredCharStr;
while ((p = strstr(p, specialCharArr[x])) != NULL )
{
    char *substr;
    substr = strstr(enteredCharStr, specialChar[x]);
    strncpy(substr, charCodesArr[x], 3);
    p++;
}
Run Code Online (Sandbox Code Playgroud)

使用我的程序输入的示例输出:"this = this&that"

this%3Dis%26at
Run Code Online (Sandbox Code Playgroud)

我希望输出为:

this%3Dthis%26that
Run Code Online (Sandbox Code Playgroud)

关于如何实现我在C中尝试做的任何想法(没有库)?

Sha*_*our 6

解决这个问题的一种方法是分配第二个字符串,该字符串是三倍大的字符串,enteredCharStr然后逐个复制字符,当您看到特殊字符时,请写入重播字符.你希望它是它的三倍,因为在最坏的情况下你需要替换几乎所有的角色.