Datei: mem3.c


    1   /*
    2    *      mem3.c
    3    *      klin, Wed Dec 17 15:08:57 1997
    4    *      Pufferueberlauf
    5    */
    6   
    7   #include <stdio.h>
    8   #include <string.h>
    9   #include <ctype.h>
   10   
   11   #define N 4
   12   #define M 8
   13   #define byte unsigned char
   14   
   15   void puthex(byte *, int);
   16   
   17   void main(void)
   18   {
   19     char *s = "Dummystring";
   20     int i, j, k;
   21     char a4[N][M];
   22   
   23     printf("Pufferueberlauf\n\n");
   24     
   25     printf("s=%p a4=%p i=%p j=%p k=%p\n", &s, &a4, &i, &j, &k);
   26     printf("a4  a = %p/%p  s = %d\n", a4, &a4, sizeof(a4));
   27     puthex((byte *) a4, sizeof(a4));
   28     for (i = 0; i < N; i++)
   29       printf("a4(%d) = %p/%p\n", i, a4[i], &a4[i]);
   30   
   31     strcpy(a4[0], "Dieser String ist viel zu lang! XXXXYYYY");
   32     printf("i=%p/%p j=%p/%p k=%p/%p\n", i, &i, j, &j, k, &k);
   33     puthex((byte *) a4, sizeof(a4)+3*sizeof(int));
   34     for (i = 0; i < N; i++)
   35       printf("a4(%d) = %p/%p \"%s\"\n", i, a4[i], &a4[i], a4[i]);
   36       
   37   } /* main() */
   38   
   39   void puthex(byte *s, int n)
   40   {
   41     int i;
   42     
   43     for (i = 0; i < n; i++) {
   44       printf("%02x", s[i]);
   45     }
   46     printf("\n");
   47     for (i = 0; i < n; i++) {
   48       printf("%2c", isprint(s[i]) ? s[i] : '.');
   49     }
   50     printf("\n");
   51   
   52   } /* puthex() */


Erzeugt von c2html 1.0