mani | Bonjour, j'ai un petit code qui me pose problème à la compilation. Il s'agit très certainement d'une erreur syntaxique, mais je n'arrive pas à la résoudre. Voilà mon code, il s'agit d'une fonction prenant en paramètre un pointeur vers un tableau de paquets, un paquet étant défini avec un typedef struct. Cette fonction lecture lit des lignes d'un fichier de log de firewall.
Code :
- static int lecture(FILE* filed, paquet* p, int sizeTab){
- int i;
- i=0;
- while (EOF !=fscanf(filed,"%d-%d-%d %d :%d :%d %s SRC=%s DEST=%s PROTO=%s SPORT=%d DPORT=%d\n",p[i].date.annee, p[i].date.mois, p[i].date.jour, p[i].heure.heure, p[i].heure.minute,p[i].heure.seconde,p[i].action, p[i].IpSrc, p[i].IpDest, p[i].prot, p[i].sPort, p[i].dPort) && (i<sizeTab) )
- {
- i++;
- }
- return i;
- }
|
et les structures :
Code :
- typedef struct{ int annee;
- int mois;
- int jour;
- }Date;
- typedef struct{ int heure;
- int minute;
- int seconde;
- }Heure;
- typedef struct {Date date;
- Heure heure;
- char action[7]; // REJECT, DROP ou ACCEPT
- char IpDest[16];
- char IpSrc[16];
- char prot[5];
- int sPort;
- int dPort;
- }paquet;
|
Forcément, gcc me donne un joli lot de warning à la compilation :
Code :
- warning : format argument is not a pointer
|
et ce pour tous les arguments correspondant à des entiers du fscanf().
Pour accéder à l'intérieur de ma fonction lecture aux éléments du tableau, j'ai bien essayé de remplacer les " p[i].date.jour " par des " (p+i)->date.jour ", mais ça fait exactement la même chose.
merci pour votre aide. Message édité par mani le 25-10-2004 à 18:37:02
|