如何在C中对字符串数组进行排序?

时间:2017-05-13 15:10:41

标签: c arrays string function sorting

我有这个程序的问题。我必须创建一个包含五个字符串元素的数组及其副本然后我必须按字典顺序对其进行排序。任何人都可以帮助我吗?

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 5
#define L 100


int main() {
    char s[N][L],c[N][L],*str;
    int i,aux,sup,j;
    printf("Inserisci stringa: ");
    for(i=0;i<N;i++)
     scanf("%s",s[i]);
    for(i=0;i<5;i++) 
      strcpy(c[i],s[i]);
    printf("Frase originale: ");
    for(i=0;i<5;i++)
      printf("%s\t",s[i]);
    printf("\n\nCopia: ");
    for(i=0;i<5;i++) 
      printf("%s\t",c[i]);
    for(i=0;i<N;i++){
        for(j=i+1;j<N;j++)
        {
         if(c[i]<c[j])
          {
           str=c[i][L];
           c[i][L]=c[j][L];
           c[j][L]=str;}
          }
        }
    printf("\n\nCopia ordinata: ");
    for(i=0;i<N;i++)
      printf("\t%s",c[i]);
 return 0;
}

请建议我做任何更改。谢谢。

1 个答案:

答案 0 :(得分:0)

要按字母顺序排列两个字符串,您可以使用函数strcmp(string1, string2)。 返回的值R是:

  • R&lt;如果匹配的第一个字符在string1中的值较低(即string1按字母顺序排在string2之后),则为0;
  • 如果字符串相同则R = 0;
  • R&gt;如果匹配的第一个字符在string1中的值较高(即string2按字母顺序排在string1之后),则为0。

有关详细信息,请参阅:http://www.cplusplus.com/reference/cstring/strcmp/

要对字符串数组进行排序,可以使用不同的排序算法,如果您是初学者,我建议使用冒泡排序(请参阅http://www.algolist.net/Algorithms/Sorting/Bubble_sort进行介绍)。

最后,我会建议更清晰的缩进和变量命名,在编写更复杂的代码时会非常有用。

祝你好运!