home *** CD-ROM | disk | FTP | other *** search
/ C/C++ User's Journal & Wi…eveloper's Journal Tools / C-C__Users_Journal_and_Windows_Developers_Journal_Tools_1997.iso / windbase / windbase.exe / MEMSLC.3 / ARRAY.C next >
C/C++ Source or Header  |  1996-07-30  |  4KB  |  120 lines

  1. /*****************************************************************************\
  2. **                                                                           **
  3. **  WW     WW IIIIIIII NNN   NN DDDDDDD  BBBBBBB     AA     SSSSSS EEEEEEEE  **
  4. **  WW  W  WW    II    NNNN  NN DD    DD BB    BB  AA  AA  SS      EE        **
  5. **  WW  W  WW    II    NN NN NN DD    DD BBBBBBB  AAAAAAAA  SSSSSS EEEEEE    **
  6. **   WW W WW     II    NN  NNNN DD    DD BB    BB AA    AA      SS EE        **
  7. **    WWWWW   IIIIIIII NN   NNN DDDDDDD  BBBBBBB  AA    AA SSSSSS  EEEEEEEE  **
  8. **                                                                           **
  9. **   SSSSSS  OOOOOO  FFFFFFFF TTTTTTTT WW     WW    AA    RRRRRRR  EEEEEEEE  **
  10. **  SS      OO    OO FF          TT    WW  W  WW  AA  AA  RR    RR EE        **
  11. **   SSSSS  OO    OO FFFFF       TT    WW  W  WW AAAAAAAA RRRRRRR  EEEEEE    **
  12. **       SS OO    OO FF          TT     WW W WW  AA    AA RR   RR  EE        **
  13. **  SSSSSS   OOOOOO  FF          TT      WWWWW   AA    AA RR    RR EEEEEEEE  **
  14. **                                                                           **
  15. *********** NOTICE ************************************************************
  16. **        This file contains valuable trade secrets and proprietary          **
  17. **        assets of Windbase Software Inc.  Embodying substantial            **
  18. **        creative efforts and confidential information.  Unauthorized       **
  19. **        use, copying, decompiling, translating, disclosure or              **
  20. **        transfer, of any kind, is strictly prohibited.                     **
  21. **                                                                           **
  22. **        COPYRIGHT (C) 1992, 1993, 1994.  Windbase Software Inc.            **
  23. **        ALL RIGHTS RESERVED.                                               **
  24. \*****************************************************************************/
  25.  
  26. #include <stdio.h>
  27. #include <malloc.h>
  28. #include <string.h>
  29. #ifdef HAS_UNISTD_H
  30. #  include <unistd.h>
  31. #else
  32. #  include <stdlib.h>
  33. #endif
  34.  
  35. #include "../memsl.h"
  36.  
  37. #ifdef WBSTDC
  38.   int Compare(char **item1, char **item2)
  39. #else
  40.   int Compare(item1, item2)
  41.     char **item1;
  42.     char **item2;
  43. #endif
  44.   {
  45.     WBTrcEntry(0,"Compare",("%s, %s",*item1?*item1:"NULL",*item2?*item2:"NULL"));
  46.  
  47.     WBTrcReturn(0,strcmp(*item1,*item2),("%d",strcmp(*item1,*item2)));
  48.   }
  49.  
  50. #if defined(WBTRC_LEVEL1) || defined(WBTRC_LEVEL2)
  51.   #ifdef WBSTDC
  52.     int main(int argc, char **argv)
  53.   #else
  54.     int main(argc, argv)
  55.       int argc;
  56.       char **argv;
  57.   #endif
  58. #else
  59.   #ifdef WBSTDC
  60.     int main(void)
  61.   #else
  62.     int main()
  63.   #endif
  64. #endif
  65.   {
  66.     WBARRAY *array;
  67.     FILE *file;
  68.     char **strarray, **strptr;
  69.     int i = 0, i2;
  70.  
  71.     WBTrcMainEntry();
  72.  
  73.     if ((array = WBArrayOpen(NULL,"200,21")) != NULL)
  74.       {
  75.     strarray = (char **) WBArrayArray(array);
  76.     if ((file = fopen("data.dat","r")) != NULL)
  77.       {
  78.         while (i < 200 && fgets(strarray[i],20,file))
  79.           {
  80.         if (*strarray[i])
  81.           if (strarray[i][strlen(strarray[i])-1] == '\n')
  82.             strarray[i][strlen(strarray[i])-1] = '\0';
  83.         i++;
  84.           }
  85.         fclose(file);
  86.  
  87.         printf("**************************** unsorted\n");
  88.         for (i2 = 0; i2 < i; i2++)
  89.           printf("%s\n",strarray[i2]);
  90.  
  91.         printf("**************************** qsort()\n");
  92.         qsort((void *)strarray,i,sizeof(char *),
  93. #ifdef FUNCTCAST
  94.           (int (*)(const void *, const void *))Compare);
  95. #else
  96.           (int (*)())Compare);
  97. #endif
  98.  
  99.         printf("**************************** sorted\n");
  100.         for (i2 = 0; i2 < i; i2++)
  101.           printf("%s\n",strarray[i2]);
  102.  
  103.         printf("**************************** bsearch\n");
  104.         strptr = (char **) bsearch(&strarray[10],(void *)strarray,i,sizeof(char *),
  105. #ifdef FUNCTCAST
  106.           (int (*)(const void *, const void *))Compare);
  107. #else
  108.           (int (*)())Compare);
  109. #endif
  110.  
  111.         if (strptr)
  112.           printf("Found: %s\n",*strptr);
  113.         else
  114.           printf("ERROR: Did not find: %s\n",strarray[0]);
  115.       }
  116.     WBArrayClose(array);
  117.       }
  118.     WBTrcReturn(0,0,("0"));
  119.   }
  120.