【发布时间】:2013-03-20 19:59:57
【问题描述】:
我正在尝试将字符串反转。
void reverseStr(char *str)
{
int i;
int length;
int last_pos;
length = strlen(str);
last_pos = length-1;
for(i = 0; i < length / 2; i++)
{
char tmp = str[i];
str[i] = str[last_pos - i];
str[last_pos - i] = tmp;
}
}
Program received signal SIGSEGV, Segmentation fault.
0x0000000000400893 in reverseStr (str=0x400974 "Haus") at main.c:102
102 str[i] = str[last_pos - i];
(gdb) print i
$1 = 0
(gdb) print last_pos
$2 = 3
(gdb) print str
$3 = 0x400974 "Haus"
(gdb) print str[3]
$4 = 115 's'
感谢您的阅读。 我不明白,这个指令怎么会导致错误?问候:)
【问题讨论】:
-
@cacho:这个问题问的是一个完全不同的问题(代码恰好想要完成相同的任务,但以不同的方式)。另一个问题的代码没有就地反转,错误是不同的......基本上,这里给出的解决方案完全不相关。
-
没错,但我的问题是字符串文字,我无法通过您的链接找到它。
-
对不起,下次我会努力搜索更好的。