我正在编写一个对文本进行编码以便可以将其放入 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++;
}
将我的程序与输入一起使用的示例输出:“this=this&that”
this%3Dis%26at
我希望输出为:
this%3Dthis%26that
关于如何实现我在 C 中尝试做的任何想法(没有库)?