C替换特殊字符
我想将“字符替换为\”,我使用以下代码:C替换特殊字符,c,C,我想将“字符替换为\”,我使用以下代码: #include <stdio.h> #include <string.h> int main() { int i, j = 0; char str[] = "HELLO'All"; char pch[128] = { 0 }; for (i = 0; i < strlen(str); i++) { if (str[i] == '\'') { pch
#include <stdio.h>
#include <string.h>
int main() {
int i, j = 0;
char str[] = "HELLO'All";
char pch[128] = { 0 };
for (i = 0; i < strlen(str); i++) {
if (str[i] == '\'') {
pch[j] = '\\';
printf(" pch[%d] = *%c* \n", j, pch[j]);
pch[++j] = str[i];
continue;
}
pch[j++] = str[i];
}
printf("pch = *%s* \n", pch);
return 0;
}
我得到的结果是:pch=*HELLO\All*
预期结果:pch=*HELLO\\所有*
我的代码中缺少了什么?似乎缺少了j的增量 像这样试试
pch[j++]='\\';
printf(" pch[%d] = *%c* \n",j-1, pch[j-1]);
pch[j++]=str[i];
pch[j]='\\';
printf(" pch[%d] = *%c* \n",j, pch[j]);
++j;
pch[j++]=str[i];
还是像这样
pch[j++]='\\';
printf(" pch[%d] = *%c* \n",j-1, pch[j-1]);
pch[j++]=str[i];
pch[j]='\\';
printf(" pch[%d] = *%c* \n",j, pch[j]);
++j;
pch[j++]=str[i];
如果您想替换原始字符串str中的撇号'
str[i] = '\\';
在以开头的if块中
if(str[i]=='\'')
这会奏效的。只有零钱。因为它是一个字符数组,所以不能添加字符串
int main()
{
int i,j=0;
char str[] = "HELLO'All";
char pch[128]={0};
for(i=0; i< strlen(str); i++)
{
if(str[i]=='\'')
{
pch[j]='\\';
j++;
pch[j]='\'';
pch[++j]=str[i];
continue;
}
pch[j++]=str[i];
}
printf("pch = *%s* \n", pch);
return 0;
}
当插入\时,您忘记了第二次增加j
以下是一个经过更正和简化的版本:
#include <stdio.h>
#include <string.h>
int main() {
int i, j;
char str[] = "HELLO'All";
char pch[128];
for (i = j = 0, str[i] != '\0'; i++) {
if (str[i] == '\'') {
pch[j++] = '\\';
}
pch[j++] = str[i];
}
pch[j] = '\0';
printf("pch = *%s*\n", pch);
return 0;
}
请注意,还应将\替换为\\,并检查目标数组是否足够大,而不是发布的代码有问题,但是一个更一般的例程需要将j与pch的大小进行比较。您希望得到什么字符串?尝试通过调试器一步一步地运行您的程序。@Acorn我想他希望HELLO“All,即在单引号前插入反斜杠