⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mdasort.c

📁 国外网站上的一些精典的C程序
💻 C
字号:
/***  MDASORT.C - Test program for mdalloc()/amalloc() demonstrating sorting*/#include <stdio.h>#include <stdlib.h>#include <ctype.h>#include <limits.h>#include "snparray.h"#include "bc_rand.h"int compare(const void *elem1, const void *elem2);int posn;void usage(void){      puts("Usage: MDATEST {A | M}");      puts("where: A means to use amalloc()");      puts("       M means to use mdalloc()");      exit(EXIT_FAILURE);}main(int argc, char *argv[]){      int i, arg;      char **ary;      if (argc < 2)            usage();      arg = toupper(*argv[1]);      if (arg != 'M' && arg != 'A')            usage();      printf("MDATEST: Using %s\n\n",             ('M' == arg) ? "mdalloc()" : "amalloc()");      /*      **  Create a 5 x 40 array of char to hold 5 strings      */      if ('M' == arg)      {            if (NULL == (ary = mdalloc(sizeof(char), 5, 40)))            {                  puts("mdalloc() failed");                  return EXIT_FAILURE;            }      }      else      {            if (NULL == (ary = amalloc(sizeof(char), NULL, 2, 5, 40)))            {                  puts("amalloc() failed");                  return EXIT_FAILURE;            }      }      /*      **  Fill the array with recognizable random strings      */      randomize();      for (i = 0; i < 5; ++i)      {            posn = sprintf(ary[i], "String #%d val = ", i + 1);            sprintf(ary[i] + posn, "%04X", random(UINT_MAX));      }      /*      **  Display the unsorted array      */      for (i = 0; i < 5; ++i)            printf("%d - %s\n", i, ary[i]);      puts("");      /*      **  Sort the array and display it again      */      qsort(ary, 5, sizeof(char *), compare);      for (i = 0; i < 5; ++i)            printf("%d - %s\n", i, ary[i]);      return EXIT_SUCCESS;}int compare(const void *elem1, const void *elem2){      char *e1 = *((char **)elem1), *e2 = *((char **)elem2);      long l1, l2;      l1 = (unsigned)strtol(&e1[posn], NULL, 16);      l2 = (unsigned)strtol(&e2[posn], NULL, 16);      return (l2 < l1) ? 1 : ((l1 == l2) ? 0 : -1);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -