抛出字符的分段错误的反向函数
reverse function for a char* throwing segmentation fault
我有以下简单的函数:
void reverse(char* str) {
if (str == NULL)
return;
char* end = str;
while(*end != NULL) {
end++;
}
end--;
while(str < end){
char temp = *str;
*str++ = *end;
*end-- = temp;
}
}
int main(int argc, char* argv[]) {
char* second = "SOMETHING ";
cout << "Before Reverse String: " << second << 'n';
reverse(second);
cout << "Reverse String: " << second << 'n';
}
很简单,对吧?然而,我在线路中遇到分段故障
*str++ = *end
*end-- = temp
我错过了什么?
谢谢!
您正在修改字符串文字:
char* second = "SOMETHING ";
这是一种未定义的行为,一种解决方案是将文字分配给字符数组:
char second[] = "SOMETHING";
此外,字符串文字将以NULL结尾,因此不需要添加