cs_wannie
Messages postés5Date d'inscriptionjeudi 19 juin 2003StatutMembreDernière intervention29 octobre 2004
-
27 juin 2003 à 12:08
vidarusny
Messages postés31Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 3 décembre 2009
-
27 juin 2003 à 14:33
Salut tt le monde.
Quelqu'un pourrai tester mon prog est me dire si ça fonctionne.
Moi je comprend pas j'ai une copie d'un caractère dans chaque ligne du fichier.
Cette appli copie juste une ligne d'un fichier vers un autre:
vidarusny
Messages postés31Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 3 décembre 2009 27 juin 2003 à 14:33
Je l'ai tester et effectivement tu as des caractère en trop. Ca vient de ta fonction :
while(!feof(test)){
fseek(test,num_enr*sizeof(ELEVE),SEEK_SET);
fread(&eleve,sizeof(ELEVE),1,test);
fwrite(&eleve,sizeof(ELEVE),1,fich);
num_enr++;
}
}
En effet tu lit à chaque fois la taille de la structure eleve soit 8 caracteres toutefois t ligne comporte 9 caractere (ne pas oublier le retour chariot).
De même qd tu te positionne tu doit pensez à rajouter 1.
Voila ton code source légèrement modifier:
#include <stdio.h>
void main(){
typedef struct{
char num[2];
//prise en conte du RC
char nom[7];
}ELEVE;
while(!feof(test)){
//positionne à la ligne suivante
fseek(test,num_enr*(sizeof(ELEVE)+1),SEEK_SET);
fread(&eleve,sizeof(ELEVE),1,test);
//Une chaine de caractère est plus propre qd le dernier caractere pointe sur null
eleve.num[9]=NULL;
fwrite(&eleve,sizeof(ELEVE),1,fich);
num_enr++;
}
}
Toutefois ton code est limite à ligne des ligne de fichier qui contient uniquement 9 caractere avec le retour chariot (au fait la valeur hexa du retour chariot est 0x0A)