home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / extra18 / ctricks / dynarray / tarray.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-01-29  |  2.0 KB  |  74 lines

  1. /* ------------------------------------------------- */
  2. /*                      TARRAY.C                     */
  3. /*        Test der Verwaltung dynamischer Arrays     */
  4. /*          (c) 1992 Thomas Lach & DMV-Verlag        */
  5. /* ------------------------------------------------- */
  6.  
  7. #include "array.h"
  8.  
  9. void main()
  10. {
  11.   _Array   *ary;
  12.   unsigned cnt = 0;
  13.   struct stru {
  14.     unsigned u;
  15.     char     s[128+1];
  16.   } stru, *st, *s;
  17.  
  18.   ary = ArrayStart(sizeof(stru));
  19.  
  20.   if (ary != NULLARRAY)
  21.   {
  22.     while(1) {
  23.       /* soviel Speicher wie möglich belegen */
  24.       stru.u = cnt++;
  25.       sprintf(stru.s, "%04x", stru.u);
  26.       if (ArrayAdd(ary, (char *)&stru) == NULLARRAY)
  27.         break;
  28.     }
  29.  
  30.     printf("\nAnzahl Elemente : %u\n"
  31.            "Benötigter Speicherplatz : %ld\n"
  32.            "\n\>> Bitte eine Taste drücken <<\n",
  33.            ArrayElemNum(ary),
  34.    (long)(ArrayElemNum(ary)-1)*(long)ary->ItemSize);
  35.     getch();
  36.  
  37.     stru.u = -1;
  38.     strcpy(stru.s,"CHANGED");
  39.     ArrayChg(ary, (char *)&stru, 20);
  40.  
  41.     for( ; ArrayGet(ary,
  42.            (ArrayElemNum(ary)-1)) != NULLARRAY; ) {
  43.       st = (struct stru *)ArrayGet(ary,
  44.            (ArrayElemNum(ary)-1));
  45.            /* addressiert wird so ... */
  46.  
  47.       s =  (struct stru *)ArrayData(ary);
  48.       *st = s[(ArrayElemNum(ary)-1)];
  49.            /* ... oder so ... */
  50.  
  51.       memcpy(&stru,
  52.             (struct stru *)ArrayGet(ary,
  53.             (ArrayElemNum(ary)-1)), ary->ItemSize);
  54.            /* ... oder so */
  55.  
  56.       printf("%8d -- %s\n",
  57.            /* ... oder so */
  58.         ((struct stru *)ArrayGet(ary,
  59.             (ArrayElemNum(ary)-1)))->u,
  60.         ((struct stru *)ArrayGet(ary,
  61.             (ArrayElemNum(ary)-1)))->s);
  62.  
  63.       ArrayDel(ary, (ArrayElemNum(ary)-1));
  64.     }
  65.  
  66.     ArrayKill(ary);        /* Array-Pointer auflösen */
  67.   }
  68.   else
  69.     puts("Nicht genügend Speicherplatz vorhanden !");
  70. }
  71. /* ------------------------------------------------- */
  72. /*               Ende von TARRAY.C                   */
  73.  
  74.