0

次のコードで、何が間違っていますか? 私はEclipseでコードを実行し、MinGW Cコンパイラを使用しています。実行すると、Eclipse が応答しなくなります。コードをデバッグすると、行で壊れます

*start = *end;

デバッグ モードで *start と *end の値を確認しましたが、どれも null ではありません。

void func1(char *str)
{
    char *end, *start;
    end = start = str;
    char tmp;

    if (str)
    {
        while (*end)
            ++end;
        --end;

        while (start < end) 
        {
            tmp = *start;
            *start = *end;
            *end = tmp;

            start++;
            end--;
        }
    }
}

ヒント/アイデアはありますか?

4

1 に答える 1

3

したがって、フィードバックによると、文字列リテラルを に渡しています。文字列リテラルの"Hello World"変更func1は未定義の動作です。代わりに、次のようなものを使用できます。動作します。

char arr1[] = "hello world" ;
func1(arr1) ;

Adam と Kerrek が指摘したように、コードにさらにエラー チェックを追加する必要がありますが、これで差し迫った問題は解決するはずです。

于 2013-08-07T19:46:08.240 に答える