2012-11-20 150 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