C 上的排序数组顺序

Sorting Array order on C

我试图在 C 上按顺序对这个数组进行排序,但我没有做对。我做错了什么?排列顺序错误,应该按以下顺序显示:

0: boy 
1: is 
2: right 
3: sitting 
4: The 
5: there.
 

谢谢大家!

    int n = sizeof(arr) / sizeof(arr[0]); 
    int i; 
  
    // Print the given array 
    printf("Given array is\n"); 
    for (i = 0; i < n; i++) 
        printf("%d: %s \n", i, arr[i]); 
  
    // Sort the array 
    sort(arr, n); 
  
    // Print the sorted array 
    printf("\nSorted array is\n"); 
    for (i = 0; i < n; i++) 
        printf("%d: %s \n", i, arr[i]); 
  
    return 0; 
} 


Output:

   
Sorted array is
The 
boy 
is 
right 
sitting 
there. 

What I'm doing wrong?

没有。您的代码工作正常。

调试这个的一个好方法是打印每个单词的第一个字符的值。这将显示 'T'、'b' 等的值,并且您会看到 A-Z 的值低于 a-z.

从另一个角度来看,如果您希望单词按照问题顶部给出的顺序打印,您将不得不对它们进行排序,以使它们不是 ASCII 顺序。您需要想出一个 compare 函数,将 'T' 和 't' 视为相同。