可能重复:
为什么这个 C 代码会导致分段错误?
我的代码:
void strrev(char *str) {
char temp, *end_ptr;
/* If str is NULL or empty, do nothing */
if( str == NULL || !(*str) )
return;
end_ptr = str + strlen(str) - 1;
/* Swap the chars */
while( end_ptr > str ) {
temp = *str;
*str = *end_ptr;
*end_ptr = temp;
str++;
end_ptr--;
}
}
void main() {
char temp;
char* x = "Hel2313lo123";
//temp = *x;
// strReverse(x);
strrev(x);
printf("\n%s", x);
}
事实上,函数 strrev() 直接复制自:How do you reverse a string in place in C or C++?
每当我尝试运行它时,我都会遇到分段错误。为什么会这样?
谢谢你!