问个很基础的问题 为什么会段错误
- C/C++ code
#include<stdio.h>#include<stdlib.h>void reverse_string(char *string){ char *last_char; for(last_char = string; *last_char != '\0'; last_char++) ; last_char--; while(string<last_char) { char temp; temp = *string; *string++ = *last_char; *last_char-- = temp; } }int main(){ char *str = (char *)malloc(sizeof(char)*20); str = "123456abcdef"; printf("str1 = %s\n",str); reverse_string(str); printf("str2 = %s\n",str); free(str); str = NULL;}把str换成数组的话 就可以执行 是不是因为字符串常量的问题?请问合理的解释应该怎么回答呢。。
[解决办法]
str = "123456abcdef";指向一个常量,不能修改
改为: strcpy(str,"123456abcdef");
[解决办法]