这是我的代码:
void reverseStr(char *str)
{
if (str == NULL) return;
int i=0, j=strlen(str) -1;
while(i<j)
{
char temp = str[j]; //i think this is the cause of the problem
str[j] = str[i];
str[i] = temp;
i++;
j--;
}
}
所以这就是它所在的地方:
int main()
{
char *str = "Forest Gump";
reverseStr(str);
cout << str;
}
这是我的错误:
/Applications/TextMate.app/Contents/SharedSupport/Bundles/C.tmbundle/Support/bin/bootstrap.sh: 第7行:1931年公交车错误“$ 3”.out
有什么想法?提前谢谢。
答案 0 :(得分:8)
指向固定字符串的指针。你正在修改它。换句话说,您尝试更改文本文字。试试这个:
char *str = strdup("Forest Gump");
reverseStr(str);
cout << str;
free(str);
答案 1 :(得分:4)
字符串文字是只读内存,你不能反转它们,也不能以任何方式修改它们而不会遇到未定义的行为。
首先将字符串复制到缓冲区中,然后传入缓冲区。或者声明一个数组而不是一个指针,并使用字符串初始化器初始化该数组。
答案 2 :(得分:0)
错误发生在程序中没有的bash / shell脚本中。你也可以发布bash脚本吗?