我假设您已经知道C标准库
qsort()功能:
void qsort(void *base,size_t nel,size_t width,int (*compar)(const void *, const void *);
最后一个参数是一个 函数指针
,这意味着您可以将任何函数传递给它。
strcmp()实际上,您可以使用,但是这样可以给您ASCIIbetical,并且您特别想要自然排序。
在这种情况下,您可以轻松编写一个:
#include <ctype.h>int natural(const char *a, const char *b){ if(isalpha(*a) && isalpha(*b)) { // compare two letters } else { if(isalpha(*a)) { // compare a letter to a digit (or other non-letter) } else if(isalpha(*b)) { // compare a digit/non-letter to a letter } else { // compare two digits/non-letters } }}else如果您很
return早就可以清除某些s
,但是有一个基本结构。检查
ctype.h像功能
isalpha()(如果一个字符是字母的一部分)
isdigit(),
isspace()以及更多。



