h********m 发帖数: 116 | 1 简单的string reverse,为啥我会get sigsegv? 我用了下面两种不同的写法,都是这
样:
Program received signal SIGSEGV, Segmentation fault.
都在这一步过不了:
str[i] = str[len-i]
*str = *end;
14 /* Swap the chars */
15 while( i
16 temp = str[i];
17 str[i] = str[len-i];
18 str[len-i] = temp;
19 i++;
20 }
while(str != end){
char tmp = *str;
*str = *end;
*end = tmp;
str++;
end --;
} |
c******t 发帖数: 1500 | 2 我猜在你的main函数:
int main()
{
char* str = "abcde";
}
对不对?
这样定义的字符串是字符串常量,是不能被modify的 |
h********m 发帖数: 116 | 3 哦,明白了,多谢!
【在 c******t 的大作中提到】 : 我猜在你的main函数: : int main() : { : char* str = "abcde"; : } : 对不对? : 这样定义的字符串是字符串常量,是不能被modify的
|
r*********n 发帖数: 4553 | 4 如果你的len = str.size(),i是从0开始
那么str[len-i]=str[len]就错了,最后一个元素是str[len-1]
后面那个把
while(str != end)改成while(str <= end) |
l*******0 发帖数: 63 | 5 Please try to think about what will happen when i=0 for str[i] = str[len-i]? |