0

我正在尝试编写一个简单的反向字符串程序并得到上述错误。我无法理解我做错了什么。

void reverse(char *str) {
char *end, *begin;
end = str;
begin = str;

while (*end != '\0') {
    end++;
}

    end--;

char temp;

while (begin < end) {
    temp = *begin;
    *begin++ = *end; //This is the line producing the error
    *end-- = temp;
}
}

void main() {
char *str = "welcome";
reverse(str);
}

需要你的帮助。谢谢。

4

1 回答 1

1

您正在尝试修改字符串文字,这是未定义的行为。如果您想修改它,这将是一种有效的声明方式strmain

char str[] = "welcome";

此外,您正在分配end到开头,str然后您正在执行以下操作:

end--;

它将指针递减到为字符串分配的内存之前,这是未定义的行为。我猜你打算这样做:

end = str+ (strlen(str)-1);
于 2013-05-07T03:19:54.890 回答