【发布时间】:2010-10-03 14:13:58
【问题描述】:
可能重复:
Why do I get a segmentation fault when writing to a string?
我想编写一个函数来反转传递给它的给定字符串。
但是我不能。如果我为 doReverse 函数(见下面的代码)提供一个字符数组,我的代码运行良好。
我不明白为什么这不起作用。
我可以访问doReverse 中的str[0],但我不能使用char 指针更改数组的任何值。有什么想法吗?
void doReverse(char *str) {
str[0] = 'b';
}
void main(void) {
char *str = "abc";
doReverse(str);
puts(str);
}
更新:
我知道如何通过将字符数组传递给它来编写反向函数:
void reverse1(char p[]) {
int i, temp, y;
for (i = 0, y = strlen(p); i < y; ++i, --y) {
temp = p[y-1];
p[y-1] = p[i];
p[i] = temp;
}
}
但是,我想写另一个版本,将 char 指针作为参数。
【问题讨论】:
-
也许你的标题应该更具体一点。一般的“这里出了什么问题”问题对任何人都没有帮助。另外我没有看到任何反向功能。只有一个名为“reverse”
-
为了清楚起见,我修改了标题 - 希望这会阻止反对票。祝你考试顺利!
-
尝试将 char* str = "abc" 改为 char str[] = "abc";
-
对标准C/C++ docs.sun.com/source/819-3689/Ch3.Std.html#23706987654322@的解释