我一直在这个上遇到段错误,有人知道原因吗?
void str_sort(char s[]) {
int i, j;
char c;
for (i = strlen(s) - 1; i > 0; i--)
for (j = 0; j < i; j++)
if (*(s+j) > *(s+j+1)) {
c = *(s+j);
*(s+j) = *(s+j+1);
*(s+j+1) = c;
}
return;
}
最佳答案
字符串文字存储在不允许修改的内存区域中。如果您创建一个数组来存储字符串,它应该可以正常工作(假设您的函数是正确的,乍一看是这样的):
int main()
{
char str[] = "PC-spiel";
str_sort(str);
return 0;
}
不同之处在于像 "PC-spiel"
这样的字符串文字是指向不可修改常量的指针。但是字符串 str
像普通数组/变量一样位于堆栈上,并在运行时获取复制到其中的值 "PC-spiel"
。
关于c - 小功能段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35873727/