【发布时间】:2013-10-09 07:03:40
【问题描述】:
除了 main 方法之外的所有东西都是我的教授写的,所以应该可以。作为参考,我很确定这段代码应该从字符串中删除任何重复的字母,将“blaahhhblah”变成“blahblah”。这段代码编译时没有错误或警告(在 1999 标准下编译),但是当我运行它时会出现段错误,我不知道为什么。我觉得这可能有一个明显的答案,但是我们在这门课程中没有使用书本,而且教授的教得也不是很好,所以我迷路了。
void g(char* a) {
char* b = a;
while(*b) {
while(*a == *b)
b++;
a++;
a* = b*;
}
}
int main() {
char* x = "blaahhhblah";
g(x);
}
【问题讨论】:
-
char* x = "..."声明了一个您无法可靠修改的常量字符串。参见,例如,stackoverflow.com/q/11058223/1281433 以获得解释。不过@Blastfurnace 的副本更好。 -
您的主要方法中可能有问题。也许你有一个实际上没有分配的引用类型
-
这不会编译。
-
行
a* = b*;做什么?除非您将其更改为*a = *b,否则此代码不会编译; -
"此代码编译时没有错误或警告" "b*" 不会编译得这么好。
标签: c string segmentation-fault