2

自分でreverseString関数を書​​いています。(テスト用)そして、iOSプラットフォームを使用してcコードを実行しますが、これは奇妙に聞こえますが、テスト用です...

これが私のコードです:

-(char *) reverseString:(char *)str
{
    char *end = str;
    char tmp;

    if (str)
    {
        while (*end) { end++; }
        --end;
        NSLog(@"%c", *end);
        while (end>str)
        {
            tmp = *str;
            *str = *end;
            str++;
            *end = tmp;
            end--;
        }
    }
    NSLog(@"%s", str);
    return str;
}

呼び出して関数を実行した後:

char *testChar = "abcd";
[self reverseString:testChar];

オンラインでエラーを受け取りました:

*str = *end;
Thread 1: EXC_BAD_ACCESS(code=2, address=0x2de4)

ここのポインターの何が問題なのか、よくわかりません...誰にもわかりませんか?

4

1 に答える 1

4

文字列リテラルは変更できません。代わりに char 配列を使用してください。

char testChar[] = "abcd";
于 2012-11-20T10:35:37.470 に答える