[C] [ résolu]pbm pointeur et tableau de structures

pbm pointeur et tableau de structures [C] [ résolu] - C - Programmation

Marsh Posté le 25-10-2004 à 18:27:39    

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 :
  1. static int lecture(FILE* filed, paquet* p, int sizeTab){
  2. int i;
  3. i=0;
  4. 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) )
  5. {
  6. i++;
  7. }
  8. return i;
  9. }


 
et les structures :

Code :
  1. typedef struct{ int annee;
  2.  int mois;
  3.  int jour;
  4.  }Date;
  5. typedef struct{ int heure;
  6.  int minute;
  7.  int seconde;
  8.  }Heure;
  9. typedef struct {Date date;
  10.  Heure heure;
  11.  char action[7]; // REJECT, DROP ou ACCEPT
  12.  char IpDest[16];
  13.  char IpSrc[16];
  14.  char prot[5];
  15.  int sPort;
  16.  int dPort;
  17.  }paquet;


 
 
Forcément, gcc me donne un joli lot de warning à la compilation :

Code :
  1. 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
Reply

Marsh Posté le 25-10-2004 à 18:27:39   

Reply

Marsh Posté le 25-10-2004 à 18:31:04    

passe les adresses à scanf et verifie qu'il extrait bien le bon nombre d'elements du format


Message édité par cris56 le 25-10-2004 à 18:32:43
Reply

Marsh Posté le 25-10-2004 à 18:36:42    

et oui ! fscanf, il faut lui passer les arguments par adresse ... merci pour ta réponse :D
problème résolu

Reply

Marsh Posté le 25-10-2004 à 18:39:29    

oui, en fait on passe l'adresse des arguments, pas les arguments par adresse :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed