我已经有了这个代码来尝试反转c风格的字符串,但是我遇到了运行时错误,并且可以使用一些帮助找出原因。谢谢!
void switchedStr(char * str) {
char * end = str;
if (str) {
while (*end) {
++end;
}
end--;
}
char temp;
while (end > str) {
temp = *str;
*str = *end;
*end = temp;
end--;
str++;
}
}
答案 0 :(得分:1)
如果你要传递
char *str = "test123";
到switchedStr
,它会给出访问冲突,因为这些字符串是常量,编译器将它们放在不可写的位置(参见C99的第6.4.5节)。如果您尝试修改它,您将获得未定义的行为。但是,如果它不是一个常量字符串文字,它就可以工作,例如
char str[]="test123";
或
char *str = _strdup("test123");