begin process at 2012 02 11 20:13:38
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Pb de copie de fichier/taille de structure


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Pb de copie de fichier/taille de structure

vendredi 27 juin 2003 à 12:08:51 | Pb de copie de fichier/taille de structure

wannie

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:

Code:
#include <stdio.h>

void main(){

typedef struct{
char num[2];
char nom[6];
}ELEVE;

ELEVE eleve;
FILE *fich;
FILE *test;
int num_enr;

fich=fopen("c:\\eleve.dat","wt");
test=fopen("c:\\test.dat","r");

num_enr=0;

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++;
}
}



le fichier est de ce type:

Code:
01xxxxxx
02aaaaaa
03zzzzzz
04yyyyyy
05pppppp


et le resultat donne :


Code:
01xxxxxx
02aaaaaaa
03zzzzzzz
04yyyyyyy
005pppppp05pppppp


je pense que ça vien de la structure mai je me casse là tête dessus depuis trois jour et j'ai toujours le même problème.

Merci d'avance pour tt aide.
vendredi 27 juin 2003 à 14:33:28 | Re : Pb de copie de fichier/taille de structure

vidarusny


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;

ELEVE eleve;
FILE *fich;
FILE *test;
int num_enr;

fich=fopen("c:\\eleve.dat","wt");
test=fopen("c:\\test.dat","r");

num_enr=0;

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)

-------------------------------
Réponse au message :
-------------------------------

> 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:
>
> Code:
> #include <stdio.h>
>
> void main(){
>
> typedef struct{
> char num[2];
> char nom[6];
> }ELEVE;
>
> ELEVE eleve;
> FILE *fich;
> FILE *test;
> int num_enr;
>
> fich=fopen("c:\\eleve.dat","wt");
> test=fopen("c:\\test.dat","r");
>
> num_enr=0;
>
> 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++;
> }
> }
>
>
>
> le fichier est de ce type:
>
> Code:
> 01xxxxxx
> 02aaaaaa
> 03zzzzzz
> 04yyyyyy
> 05pppppp
>
>
> et le resultat donne :
>
>
> Code:
> 01xxxxxx
> 02aaaaaaa
> 03zzzzzzz
> 04yyyyyyy
> 005pppppp05pppppp
>
>
> je pense que ça vien de la structure mai je me casse là tête dessus depuis trois jour et j'ai toujours le même problème.
>
> Merci d'avance pour tt aide.
>


Cette discussion est classée dans : fichier, copie, test, num, eleve


Répondre à ce message

Sujets en rapport avec ce message

Variable .BAT [ par nzimmer ] Bonsoir, j'ai du créer un fichier .bat, mais je ne trouve nul part une aide pour pouvoir faire en sorte qu'il se copie lui même avec tout son contenu problème de déplacement à la fin d'un fichier binaire [ par bernidupont ] Bonsoir,j'ai essayé de résoudre mon problème, mais je n'ai pas su trouver de solution.Mon problème est le suivant:j'ai un fichier binaire dans lequel Copie de fichier en append [ par 0x80h4x0r ] Salut();Je voudrais coder une simple application de copie de fichier plain text (pas binaire) . Le probleme c'est que je veux copier les fichier en ap copier résultat variable dans fichier TXT [ par pancratee ] Salut tout le monde, Je souhaite afficher et mettre en forme le résultat de mon programme à savoir les variables dans un fichier txt. J'ai tenté que Date de création d'un fichier copié [ par xasm ] Bonjour, Je desir savoir si on peut connaitre la date de création d'un fichier copier. Voila en fait si je copie un fichier qui date de janvier 2 Problème bizarre lecture fichier ini [ par OrbLux ] Bonjour à tous !!! Bon mon problème est vraiment très étrange... J'ai un code censé lire un fichier Test.ini situé dans le même dossier que mon exécu Problème écriture fichier avec fputs et chaine créée avec l'objet string [ par curite ] Bonjours, j'ai un problème, je n'arrive pas a écrire dans un fichier avec fputs en mettant un chaine de caractère créée avec l'objet string, voici le Récupération de variable dans un fichier .cgi [ par testeur25 ] Bonjour, je suis développeur débutant et je souhaite réaliser une application client en C qui permette de récupérer les variables dynamiques d'un fic


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,529 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales