字符数组按字母顺序排序-C

标签 c arrays sorting

我想按字母顺序对 char 数组进行排序。我使用了这个功能:

int cchars(const char* a, const char *b)
{ char temp=*a-*b;
    if (temp>0)
        return 1;
    else if(temp<0)
        return -1;
    else 
        return 0;

} 

我用了这个:

qsort(larray,counter,sizeof(char),cchars);

它成功了。

但我需要从该数组中省略相同的字符。 例如,如果我的数组是: {'a','z','f','m','d','a'}

它必须返回为:

{'a','d','f','m','z'}

我该如何实现这个?请帮忙。

最佳答案

排序后删除重复项是最容易的,因为它们将彼此相邻。只需使用两个迭代器遍历数组,一个迭代器始终向前移动,另一个迭代器仅在下一个元素不重复时才向前移动:

int i, j;
char prev = -1;
for (i = j = 0; i < (sizeof cchars); i++)
  if (prev != cchars[i])
    prev = cchars[j++] = cchars[i];

之后您可能还想用 NUL 字符填充数组的其余部分:

 memset(cchars + j, 0, (sizeof cchars) - j);

在 qsort 之后应用的代码将转换:

{'a','z','f','m','d','a'}{'a', 'd', 'f '、'm'、'z'、'\0'}

关于字符数组按字母顺序排序-C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23602814/

相关文章:

c++ - 从 getchar 读取输入

c++ - 为什么 fill() 在一维数组上使用时编译,但在多维数组上不编译

c - 如何在二维数组中找到匹配值的最快方法

vba - 自定义排序与自定义排序

python - 对 pandas 中的数据框进行排序

c - C 中的高效文件保存,将某些位写入二进制文件

c - 请帮助我在 C 中使用 memcpy()

c - 连接扩展板时 Arduino 未接收串行数据

java - 如何将数组中的数字按降序排列?

matlab - 矩阵上的垃圾、索引和唯一性(如何保持矩阵格式)