0

我正在处理字符串:{()}我的代码搜索第一个)并用空格替换它和它之前(的字符,结果是{ }

我想要做的不是将匹配替换为空格,而是从字符串中删除括号并使用我现有的代码再次递归检查字符串。我正在尝试找到一种方法来使用memmove或类似的东西来折叠剩余的字符

char openKey[] = "({<[";
char closeKey[] = ")}>]";
pch = strpbrk(parenthesesStack, closeKey);
while (pch != NULL)
{

    if (opposits(*(pch-1),*pch)){
        printf("%c %c\n" , *(pch-1), *pch);
        memmove(pch-1,"  ",2);
    }
    pch = strpbrk (parenthesesStack,closeKey);
}
4

2 回答 2

0

所以你想将字符串的其余部分向左移动 2 个位置?

试试这个:

    memmove(pch-1, pch+1, strlen(pch+1) + 1);
于 2012-11-12T16:24:33.987 回答
0

而不是使用memmove()and strlen(),只需使用strcpy().

strcpy( pch - 1, pch + 1);
于 2012-11-12T17:43:11.753 回答