2013-03-30 119 views
-1

这里是一个sort_list_forward叫小功能排序字符串数组以 “A A B B C C” 用C

struct customer * sort_list_forward (struct customer * liste_) 
{ 
    struct customer *pointer1, *pointer2; 
    struct customer tmp; 

    if (liste_!=NULL) 
    { 
     pointer1 = liste_; 
     while(pointer1 != NULL) 
     { 
      pointer2 = pointer1->next; 
      while(pointer2 != NULL) 
      { 

       if (strcmp(pointer1->name,pointer2->name) > 0) 
       { 
        strcpy(tmp.name, pointer2->name); 
        strcpy(pointer2->name, pointer1->name); 
        strcpy(pointer1->name, tmp.name); 
       } 
       pointer2 = pointer2->next; 
      } 
      pointer1 = pointer1->next; 
     } 
     return liste_; 
    } 
    else 
    { 
     printf("sortnames: no elements avaiable"); 
     return NULL; 
    } 
} 

的结构顾客看起来像

typedef struct customer { 
    char name[256]; 
    struct customer *next; 
    struct customer *previous; 
}; 

,如果我用这个功能输出看起来像

Ann 
Bernd 
Hans 
barbara 
bart 
berta 
homer 

,但我想的输出,看起来像

Ann 
barbara 
bart 
berta 
Bernd 
homer 
Hans 

A A B B C C d d ...

我搜索了超过8小时却一无所获:(

+0

如果你使用'std :: string'和'std :: sort',这将会容易得多。 –

+0

这是C还是C++?我怀疑它是C. –

+0

根据比较标准,您可以更容易地实现自己的'strcmp'版本。使用标准的'strcmp'作为参考,它是免费的 – SomeWittyUsername

回答

3

相反的strcmp,通过调用strcoll比较使用整理顺序,你的字符串。

1

使用strcasecmp作为排序顺序是忽略单词的情况。

+1

'strcasecmp'不是C或C++标准的一部分。这是POSIX。 –

+0

如果我使用strcasecmp输出的样子, 安 芭芭拉 巴特 贝恩德 伯塔 汉斯 本垒打 –

相关问题