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()とを使用する代わりに、 をstrlen()使用してstrcpy()ください。

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