在 C 中:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
static int intpart(const char *s)
{
while (*s) {
if (isdigit((unsigned char)*s)) break;
s++;
}
return atoi(s);
}
static int comp(const void *pa, const void *pb)
{
int a = intpart(*(const char **)pa);
int b = intpart(*(const char **)pb);
return (a < b) ? -1 : (a > b);
}
int main(int argc, char *argv[])
{
int i;
if (argc < 2) {
fprintf(stderr, "Usage: %s args\n", argv[0]);
exit(EXIT_FAILURE);
}
qsort(&argv[1], argc - 1, sizeof(char *), comp);
for (i = 1; i < argc; i++) {
printf("%s\n", argv[i]);
}
return 0;
}
使用以下命令运行它:
./mysort a1dc3 ab2 ab4c b3a ca15d2
或者
./mysort $(< file)