C   21

essai c

Guest on 10th May 2022 05:18:26 PM

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. test_pointeurs()
  5. {
  6.   char * a = "a";
  7.   char * b = "b";
  8.   char * c = "c";
  9.   char ** pb = &b;
  10.  
  11.   a = b;
  12.   pb = &c;
  13.   printf( "%s,%s,%s\n", a, b, c );
  14. }
  15.  
  16. test_tableaux()
  17. {
  18.   int k = 2;
  19.   char **t ;
  20.   t = malloc( sizeof(char*[k]) );
  21.   t[0] = "Bonjour !";
  22.   t[1] = "C'est moi !";
  23.   printf("%s\n%s\n", t[0], t[1] );
  24. }
  25.  
  26. char ** parse_msg(char * msg, int * nb_headers, char ** body)
  27. {
  28.   int i;
  29.   char lastread = 0;
  30.   char * s = "";
  31.   int nbhd = 0;
  32.   char ** hd = malloc(8);
  33.   hd[0] = malloc (1);
  34.   /* hd[0] = " "; */
  35.   int deux_points = 0;
  36.   int nbcles = 1;
  37.   int l = 0;
  38.  
  39.   for( i = 0; !(lastread == '\n' && msg[i] == '\n'); i++ )
  40.     {
  41.       printf("%d\n", msg[i] );
  42.       if( msg[i] == '\n' )
  43.         {
  44.           printf("Saut de ligne.\n");
  45.           realloc(hd[nbcles - 1], ++l);
  46.           hd[nbcles - 1][l - 1] = 0;
  47.           nbhd++;
  48.           nbcles++;
  49.           realloc( hd, (nbcles) * sizeof(char*) );
  50.           hd[nbcles - 1] = malloc (1);
  51.           /*          hd[nbcles - 1] = " "; */
  52.           l = 0;
  53.           deux_points = 0;
  54.         } else if ( deux_points == 0 && lastread == ':' && msg[i] == ' ') {
  55.           printf("Espace après deux-points.\n");
  56.          realloc(hd[nbcles - 1], ++l);
  57.          hd[nbcles - 1][l - 1] = 0;
  58.          nbcles++;
  59.          realloc( hd, (nbcles) * sizeof(char*) );
  60.          hd[nbcles - 1] = malloc(1);
  61.          /*          hd[nbcles - 1] = "" "; */
  62.           l = 0;
  63.           deux_points = 1;
  64.         } else {
  65.           l++;
  66.           printf("Lu.%d\n", l);
  67.           realloc(hd[nbcles - 1], l);
  68.           printf("Alloué.\n");
  69.           hd[nbcles - 1][l - 1] = msg[i];
  70.         };
  71.       lastread = msg[i];
  72.     };
  73.  
  74.   *nb_headers = nbhd;
  75.   *body = &msg[i+1];
  76.   printf("%d\n", nbcles);
  77.   return hd;
  78. }
  79.  
  80. main()
  81. {
  82.   char * msg = "NEWSGROUPS: a,b,c\nSENDER: ramanana\n\nLe corps du message.";
  83.   int nb_headers = 0;
  84.   char * body = "";
  85.   char **headers = parse_msg(msg, &nb_headers, &body);
  86.   printf("Le champ %s est %s ; le champ %s est %s ; %s\n", headers[0], headers[1], headers[2], headers[3], body);

Raw Paste


Login or Register to edit or fork this paste. It's free.