【发布时间】:2015-12-31 13:12:16
【问题描述】:
我正在尝试对 c 字符串进行冒泡排序 - 请参见下面的函数。目的是根据 ASCII 码对字符进行排序。
编译器直到运行时才会抱怨,此时我遇到了分段错误。我已经运行了 gdb,程序运行良好,直到第 12 行。在第 12 行,gdb 调试器声明“进程 gdb-inferior 已被杀死”。
为什么第 12 行不正确?我在程序的其他地方遇到过这个问题 - 无法将字符分配给 c 字符串的元素。我知道 strcpy() 是字符串分配所需要的,但是对于特定的元素,我认为没问题。非常感谢任何帮助。
1. void bubblesort(char *str)
2. {
3. int length = strlen(str);
4.
5. for (int i = length - 1; i > 0; i--)
6. {
7. for (int j = 0; j < i; j++)
8. {
9. if (str[j] > str[j + 1])
10. {
11. char temp = str[j + 1];
12. str[j + 1] = str[j];
13. str[j] = temp;
14. }
15. }
16. }
17. return;
18. }
【问题讨论】:
-
你是怎么打电话给
bubblesort的? -
@Yu Hao 我这样调用bubblesort: bool anagram(char *str1, char *str2) { // 根据ASCII码对两个数组进行排序 bubblesort(str1);冒泡排序(str2); // 对两个数组调用 compare if (compare(str1, str2)) return true;否则返回假; }
标签: c variable-assignment element bubble-sort c-strings