2016-07-04 14 views
-2

Cスタイルの文字列を逆にしようとしていますが、ランタイムエラーが発生しました。ありがとう!Cスタイルの文字列を反転する - ランタイムエラー

void switchedStr(char * str) { 
    char * end = str; 
    if (str) { 
     while (*end) { 
      ++end; 
     } 
     end--; 
    } 
    char temp; 
    while (end > str) { 
     temp = *str; 
     *str = *end; 
     *end = temp; 
     end--; 
     str++; 
    } 
} 
+0

ラインのために、働くだろうか? –

+5

Strange .... 'switchedStr(" Test ")'のように呼びますか? 'int main() { \t char * test =" test ";または次のようなコードを使用します。 \t switchedStr(テスト); printf( "%s \ n"、test); return 0;} ' – LPs

+0

@Micaela Connors問題は、文字列リテラルを逆転しようとしているようです。 –

答えて

1

あなたはswitchedStr

char *str = "test123"; 

を渡している場合は、そのような文字列が一定であると、コンパイラは非書き込み可能な場所でそれらを置くので、(C99のセクション6.4.5を参照して、アクセス違反を与えるだろう)。変更しようとすると、未定義の動作が発生します。それは定数文字列リテラルではありませんしかし、もし、それがまさに、たとえば

char str[]="test123"; 

または

char *str = _strdup("test123");