[C] Parser un fichier texte

Parser un fichier texte [C] - C - Programmation

Marsh Posté le 08-04-2009 à 00:25:56    

Bonjour,
 
j'ai un fichier texte contenant des informations de ce style :
 
 
F=WC49B1,B,/DTS001/ACCUEIL_FICHIER/%initiator%/%ident%_CARACPEL_%parm%,
   "/opt/xcmon/scripts/xc_recept_comete.sh %localfile% %initiator%",
   "/opt/xcmon/scripts/xc_echec_recept.sh %localfile% %initiator% %date% %ident% %errcode% %errorg% %status%",,N,N
F=WC50B1,B,/DTS001/ACCUEIL_FICHIER/%initiator%/%ident%_CARACTYPMVT_%parm%,
   "/opt/xcmon/scripts/xc_recept_comete.sh %localfile% %initiator%",
F=IR1MB2,A,"/DTS001/XCM_INF/%initiator%/ir1mb2",
"/opt/xcmon/scripts/xc_recept_infocentre.sh %localfile% %initiator%",
"/opt/xcmon/scripts/xc_echec_infocentre.sh %localfile% %initiator%",,N,N
F=IR1MB3,A,"/DTS001/XCM_INF/%initiator%/ir1mb3",
"/opt/xcmon/scripts/xc_recept_infocentre.sh %localfile% %initiator%",
"/opt/xcmon/scripts/xc_echec_infocentre.sh %localfile% %initiator%",,N,N
F=IRAMB1,A,"/DTS001/XCM_INF/%initiator%/iramb1",
F=WS0DB1,B,"/DTS001/ACCUEIL_FICHIER/%initiator%/%ident%_PREDICA_HIST_%parm%",
   "/opt/xcmon/scripts/xc_recept_comete.sh %localfile% %initiator%",
   "/opt/xcmon/scripts/xc_echec_recept.sh %localfile% %initiator% %date% %ident% %errcode% %errorg% %status%",0,N,N
F=WC0NB2,B,/DTS001/ACCUEIL_FICHIER/%initiator%/%ident%_LSF_%parm%,
   "/opt/xcmon/scripts/xc_recept_comete.sh %localfile% %initiator%",
   "/opt/xcmon/scripts/xc_echec_recept.sh %localfile% %initiator% %date% %ident% %errcode% %errorg% %status%",,N,N
F=DWHFLUX1,B,/DTS001/ACCUEIL_FICHIER/xcmonprm/%ident%_SINISTRESMRA_%parm%,
   "/opt/xcmon/scripts/xc_recept_comete.sh %localfile% xcmonprm",
   "/opt/xcmon/scripts/xc_echec_recept.sh %localfile% %initiator% %date% %ident% %errcode% %errorg% %status%",,N,N
 
 
 
A partir de ce fichier, je dois afficher uniquement le le nom du fichier en entrée et celui en sortie, par exemple
pour les 3 premières lignes :
 
 
F=WC49B1,B,/DTS001/ACCUEIL_FICHIER/%initiator%/%ident%_CARACPEL_%parm%,
   "/opt/xcmon/scripts/xc_recept_comete.sh %localfile% %initiator%",
   "/opt/xcmon/scripts/xc_echec_recept.sh %localfile% %initiator% %date% %ident% %errcode% %errorg% %status%",,N,
 
 
Je dois afficher : WC49B1;_CARACPEL_
 
 
J'ai réussi a afficher le "WC49B1" en faisant
 

Code :
  1. /* Ouverture du fichier */
  2. ....
  3. /* Buffer... */
  4. ....
  5. if (!strncmp(&buf [0],"F=",2))
  6.             {
  7.                         strncpy(tmp,buf,strlen(buf)-2);
  8.                         ptrtmp+=2;
  9.                         strcpy(ligne,ptrtmp);
  10.                         ptrtmp-=2;
  11.                         len = strlen(ligne);
  12.                               // ***** ENTREE *****
  13.                               k = 0;
  14.                               while ((k<=len) && (strncmp(&ligne [k],",",1)))
  15.                                     {
  16.                                                 if ((strncmp(&ligne [k],",",1)) || (k==len))
  17.                                                             {
  18.                                                                         nom_entree[k] = ligne[k];
  19.                                                             }
  20.                                                 k++;
  21.                                     }
  22.                                     strncat(nom_entree,"\0",1);
  23.                                     printf("Fichier entree : %s || ",&nom_entree);
  24.                                     memset (nom_entree,'\0',sizeof (nom_entree));                   
  25.             }


 
Pour l'instant ça fonctionne j'ai le fichier en entrée qui s'affiche pour chaque "ligne"
 
Vous avez une idée pour avoir le nom du fichier en sortie?

Reply

Marsh Posté le 08-04-2009 à 00:25:56   

Reply

Marsh Posté le 09-04-2009 à 21:12:45    

up

Reply

Sujets relatifs:

Leave a Replay

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