2012-11-20 173 views
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) 

我真的不知道明白什麼是錯的智慧h指針在這裏...任何人有任何想法?

+0

這是什麼語言?這不是ISO C! – Dughall

+0

@Dughall:這是[Objective-C](http://en.wikipedia.org/wiki/Objective-C),但他試圖用它來與C一起玩。 –

+0

對不起,我很困惑。我把obj-c與c混合在一起。我知道這很醜陋... – zeroliu

回答

4

不能修改字符串文字。改用char數組。

char testChar[] = "abcd"; 
+0

太棒了!而已。我真的認爲char *和一個char數組是一回事。 – zeroliu