我正在编写一个对文本进行编码的程序,以便将其放入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中尝试做的任何想法(没有库)?
解决这个问题的一种方法是分配第二个字符串,该字符串是三倍大的字符串,enteredCharStr然后逐个复制字符,当您看到特殊字符时,请写入重播字符.你希望它是它的三倍,因为在最坏的情况下你需要替换几乎所有的角色.
| 归档时间: |
|
| 查看次数: |
538 次 |
| 最近记录: |