反转c样式字符串 - 运行时错误

时间:2016-07-04 15:20:41

标签: c

我已经有了这个代码来尝试反转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++;
    }
}

1 个答案:

答案 0 :(得分:1)

如果你要传递

char *str = "test123";

switchedStr,它会给出访问冲突,因为这些字符串是常量,编译器将它们放在不可写的位置(参见C99的第6.4.5节)。如果您尝试修改它,您将获得未定义的行为。但是,如果它不是一个常量字符串文字,它就可以工作,例如

char str[]="test123";

char *str = _strdup("test123");