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

标签 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;
}

请向我提出任何更改建议。提前致谢。

最佳答案

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

  • 如果第一个匹配的字符在 string1 中具有较低的值(即,按字母顺序,string1 位于 string2 之前),则 R < 0;
  • 如果字符串相同,则 R = 0;
  • R > 0 如果第一个匹配的字符在 string1 中具有更高的值(即,按字母顺序,string2 位于 string1 之前)。

更多详情请参阅:http://www.cplusplus.com/reference/cstring/strcmp/ .

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

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

祝你好运!

关于c - 如何在 C 语言中对字符串数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43954674/

相关文章:

arrays - 先排列奇数,再排列偶数。奇偶顺序不应该改变

jquery - 如何使用 jQuery 删除链接文本中的第一个字符?

python - 在 Python 列表中查找 "closest"字符串(按字母顺序)

c - 整数从字符串[]接收到错误的值

const char const *char[] 编译器警告

c - 如何用C语言打印这个星形图案?

java - 在 Java Applet 中打印整个数组而不是单个值

javascript - 如何在 Android 中为 WebView 中的 Javascript 转义 MathML 字符串

arrays - 为什么 C 数组元素(貌似)存储在 4 个 block 中?

c - 为什么我的 char 数组有一半是空白?