1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
#include <stdlib.h>
#define ABS(x) ((x) < 0 ? -(x) : (x))
typedef struct s_list
{
char *nom;
char *prenom;
int age;
char *genre;
struct s_list *next;
} t_list;
t_list *push(t_list **b, char *n, char *p, char *a, char *g)
{
t_list *new;
if (!(new = malloc(sizeof(t_list))))
return (NULL);
if (!(new->nom = strdup(n)))
return (NULL);
if (!(new->prenom = strdup(p)))
return (NULL);
if (!(new->genre = strdup(g)))
return (NULL);
new->age = ABS(atoi(a));
new->next = *b;
*b = new;
return (new);
}
void free_list(t_list *l)
{
t_list *t;
while (l)
{
t = l->next;
free(l->prenom);
free(l->nom);
free(l->genre);
free(l);
l = t;
}
}
const char t[] = {
"prenom",
"nom",
"age",
"genre",
0
};
char *param(char *buffer, char *param)
{
/* return parameter sense to strtok and its id in t */
}
int main(int argc, char *argv[])
{
t_list *list;
char buffer[512];
FILE *f;
/* open file */
list = NULL;
while (fgets(buffer, 512, f))
if (!push(&list, param(buffer, "prenom")
, param(buffer, "nom")
, param(buffer, "age")
, param(buffer, "genre")))
return (1);
/* treat list */
fclose(f);
free_list(list);
return (0);
} |
Partager