Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 冒泡排序到字符指针_C_Sorting_Pointers_Bubble Sort_Char Pointer - Fatal编程技术网

C 冒泡排序到字符指针

C 冒泡排序到字符指针,c,sorting,pointers,bubble-sort,char-pointer,C,Sorting,Pointers,Bubble Sort,Char Pointer,我试图制作一个程序,在“char**arr”中插入一个char指针,然后用strcmp对char指针进行排序,但由于某些原因,它无法工作,我添加的代码是整个代码的排序部分 do { flag = 0; for (i = 0; i < num - 1; i++) { if ((strcmp(arr[i], arr[i + 1])) < 0) { fl

我试图制作一个程序,在“char**arr”中插入一个char指针,然后用strcmp对char指针进行排序,但由于某些原因,它无法工作,我添加的代码是整个代码的排序部分

do
    {
        flag = 0;

        for (i = 0; i < num - 1; i++)
        {
            if ((strcmp(arr[i], arr[i + 1])) < 0)
            {
                flag = 1;
                temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp;
            }

            else if ((strcmp(arr[i], arr[i + 1])) > 0)
            {
                flag = 1;
                temp = arr[i + 1];
                arr[i + 1] = arr[i];
                arr[i] = temp;
            }

            else if ((strcmp(arr[i], arr[i + 1])) == 0)
            {
                flag = 1;
                continue;
            }
        }
    } while (flag == 1);
do
{
flag=0;
对于(i=0;i
  • 根据您想要的是升序还是降序,您应该只在其中一种
    if
    情况下交换
    arr[i]
    arr[i+1]
    。(无论是
    strcmp()<0
    还是
    strcmp()>0
    case)
  • 标志
    仅应在实际发生交换时指定为1。否则循环不会停止

  • 另一方面,你不需要三个字符串比较,只要一个,将结果保存到一个变量就足够了,然后比较变量。谢谢你,我尝试了你所说的,程序仍然崩溃。您认为我应该怎么做?@OfekEzon使用调试器检查崩溃的位置以及哪个指针的值不正确。