Problème de lecture

Résolu
Signaler
Messages postés
218
Date d'inscription
mercredi 17 mai 2006
Statut
Membre
Dernière intervention
30 mai 2011
-
Messages postés
218
Date d'inscription
mercredi 17 mai 2006
Statut
Membre
Dernière intervention
30 mai 2011
-
Hello ,

J'ai un petit problème de lecture lorsque j'essaye de lire ce fichier (en voici quelque ligne ) :

Le 12 minutes                           16/02/200900:0000:25La une    Actualité          
Une brique dans le ventre               16/02/200900:2500:50La une    Magazine           
JT traduction gestuelle                 16/02/200900:5006:00La une    Actualité          
Matin première                          16/02/200906:0009:40La une    Actualité          
Affaires à suivre                       16/02/200909:4010:05La une    Magazine           
Une brique dans le ventre               16/02/200910:0510:30La une    Magazine           
La kiné                                 16/02/200910:3010:30La une    Série Télé         
Questions d'argent                      16/02/200911:5911:59La une    Magazine           

La structure de fichier se comporte comme cela : 40 caractères puis 10car ,5car , 5car ,10car, 20car

J'ai essayé de faire ceci mais sela ne marche que pour la 1 ere ligne :

#include <stdio.h>
#include <string.h>

main(){

char v1[41];
char v2[11];
char v3[6];
char v4[6];
char v5[11];
char v6[21];
FILE*fdat = fopen("dat.dat","r");
int i;
//lecture anticipée pour le foef

fgets(v1,41,fdat);
fscanf(fdat,"%10s",v2);
fscanf(fdat,"%5s",v3);
fscanf(fdat,"%5s",v4);
fgets(v5,11,fdat);
fscanf(fdat,"%s",v6);

while(!(feof(fdat))){
  printf("%40s %10s %5s %5s %10s %20s",v1,v2,v3,v4,v5,v6); 

  fgets(v1,41,fdat);
  fscanf(fdat,"%10s",v2);
  fscanf(fdat,"%5s",v3);
  fscanf(fdat,"%5s",v4);
  fgets(v5,11,fdat);
  fscanf(fdat,"%s",v6);

 }
 
}

Cela donne comme résultat :

Le 12 minutes                            16/02/2009 00:00 00:25 La une       Actualité                                                                                                                                                                          
 Une brique  dans  le v entre                 16/02/200 900:2500:50La une    Magazine                                          
 JT tr aduct ion gestue  lle                  16/02/200900:5006:00La une    Actualit? ?                                        
 Matin  première                             16/02/200906:0009:40La une    Act ualité                                          
 Affaires ?  ? suivre                        16/02/200909:4010:05La une     Magazine                                           
  Une brique dans le  ventre               16/02/200910:0510:3 0La une     Maga zine                                  La kiné                                  16/02/200 910:3 010:3 0La une      Série Télé                                                   
 Questions  d'arg ent                         16/02/200

Merci D'avance de m'aider

@ +

4 réponses

Messages postés
276
Date d'inscription
lundi 8 septembre 2008
Statut
Membre
Dernière intervention
15 avril 2013
2
Bonjour,

Il faut lire les lignes du fichier dans une variable suffisament grande : 92 caractères soit la longueur d'une ligne + \n + \0
Il est inutile de lire la première ligne, tu peux faire une boucle while(fgets(...))
dans le cas d'un fichier à champs de longueur fixe strcpy est préférable.
Teste l'exsitence du FILE * avant de commencer la lecture

ed73

#include <stdio.h>
#include <string.h>

main(){

char ligne[92];
char v1[41];
char v2[11];
char v3[6];
char v4[6];
char v5[11];
char v6[21];
FILE*fdat = fopen("dat.dat","r");
int i;

if(fdat!=NULL){
   while(fgets(ligne,sizeof(ligne),fdat)){
     strcpy(v1,ligne,40);
     strcpy(v2,ligne+40,10);
     strcpy(v3,ligne+50,5);
     strcpy(v4,ligne+55,5);
     strcpy(v5,ligne+60,10); 
     strcpy(v6,ligne+70,20);

     printf("%40s %10s %5s %5s %10s %20s",v1,v2,v3,v4,v5,v6);  
     } 
   }
}
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
7
Utilise strncpy
A+
____________________________________________________________________________
Mon site internet :  
http://ImAnalyse.free.fr
Messages postés
218
Date d'inscription
mercredi 17 mai 2006
Statut
Membre
Dernière intervention
30 mai 2011

Merci pour ta réponse mais j'ai une erreure de compilation : µ

 --> too many arguments to function ‘strcpy’

Je pense ke la fonction strcpy n'a que deux argments

Merci d'avance
Messages postés
218
Date d'inscription
mercredi 17 mai 2006
Statut
Membre
Dernière intervention
30 mai 2011

ah !! sa marche

Merci Bien