我正在尝试编写一个简单的反向字符串程序并得到上述错误。我无法理解我做错了什么。
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);
}
需要你的帮助。感谢。
答案 0 :(得分:1)
您正在尝试修改字符串文字,这是未定义的行为。如果你想修改它,这将是str
中声明main
的有效方式:
char str[] = "welcome";
此外,您将end
分配到str
的开头,然后您正在执行此操作:
end--;
将指针递减到为字符串分配的内存之前,这是未定义的行为。我猜你打算这样做:
end = str+ (strlen(str)-1);