C
21
essai c
Guest on 10th May 2022 05:18:26 PM
#include <stdio.h>
#include <stdlib.h>
test_pointeurs()
{
char * a = "a";
char * b = "b";
char * c = "c";
char ** pb = &b;
a = b;
pb = &c;
printf( "%s,%s,%s\n", a
, b
, c
);
}
test_tableaux()
{
int k = 2;
char **t ;
t
= malloc( sizeof(char*[k
]) );
t[0] = "Bonjour !";
t[1] = "C'est moi !";
printf("%s\n%s\n", t
[0], t
[1] );
}
char ** parse_msg(char * msg, int * nb_headers, char ** body)
{
int i;
char lastread = 0;
char * s = "";
int nbhd = 0;
/* hd[0] = " "; */
int deux_points = 0;
int nbcles = 1;
int l = 0;
for( i = 0; !(lastread == '\n' && msg[i] == '\n'); i++ )
{
if( msg[i] == '\n' )
{
hd[nbcles - 1][l - 1] = 0;
nbhd++;
nbcles++;
realloc( hd
, (nbcles
) * sizeof(char*) );
/* hd[nbcles - 1] = " "; */
l = 0;
deux_points = 0;
} else if ( deux_points == 0 && lastread == ':' && msg[i] == ' ') {
printf("Espace après deux-points.\n");
realloc(hd[nbcles - 1], ++l);
hd[nbcles - 1][l - 1] = 0;
nbcles++;
realloc( hd, (nbcles) * sizeof(char*) );
hd[nbcles - 1] = malloc(1);
/* hd[nbcles - 1] = "" "; */
l = 0;
deux_points = 1;
} else {
l++;
hd[nbcles - 1][l - 1] = msg[i];
};
lastread = msg[i];
};
*nb_headers = nbhd;
*body = &msg[i+1];
return hd;
}
main()
{
char * msg = "NEWSGROUPS: a,b,c\nSENDER: ramanana\n\nLe corps du message.";
int nb_headers = 0;
char * body = "";
char **headers = parse_msg(msg, &nb_headers, &body);
printf("Le champ
%s est
%s
; le champ
%s est
%s
; %s\n"
, headers
[0], headers
[1], headers
[2], headers
[3], body
);