Accueil > Forum > > > > union de deux fichiers
union de deux fichiers
samedi 19 septembre 2009 à 10:35:20 |
union de deux fichiers

boualiasma
|
Bonjour,
Je voulais ajouter autres lignes (autres données) à la fin du fichier 'output.txt' à partir d'un autre fichier 'exp.txt'
le contenu de fichier 'input.txt':
lundi
mardi
mercredi
jeudi
le contenu de fichier 'exp.txt':
Je voulais obtenir comme résultat dans le fichier 'output.txt' et son contenu est :
lundi
mardi
mercredi
jeudi
juin
septembre
Octobre
Voici une partie de 'main':
Code C/C++ : #include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE *fp_input, *fp_output,*fp_exp;
fp_input= fopen("input.txt","r");
fp_res= fopen("exp.txt","r");
fp_output= fopen("output.txt","w");
CopyFile("input.txt", "output.txt", FALSE);
return 0;
}
comment je vais le compléter le contenu de fichier 'exp.txt' dans 'output.txt' ?
sachant si à chaque fois on lance l'exécution de ce programme alors on obtient un nouveau fichier 'output.txt' indépendant de ancien contenu de l'exécution précédente.
Merci.
|
|
samedi 19 septembre 2009 à 12:07:56 |
Re : union de deux fichiers

boualiasma
|
Bonjour,
les deux fichiers 'input.txt' et 'exp.txt' existe déjà et ils sont crées.
je voulais si à chaque fois on lance l'exécution de ce programme alors on obtient un nouveau fichier 'output.txt' indépendant de ancien contenu de l'exécution précédente c'est à dire on écrase l'ancien contenu.
Quel mode d'ouverture de fichier à choisir et qui est adapté à mon problème ?
quelle est la différence entre le mode "a" et "a+" ?
Voici mon essai mais il n'est pas complète:
Code C/C++ :
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE *fp_output,*fp_exp;
char s[100];
CopyFile("input.txt", "output.txt", FALSE);
fp_exp= fopen("exp.txt","r");
fp_output= fopen("output.txt","a");
fprintf(fp_output,"\n");
while(fgets(s,100,fp_exp))
fprintf(fp_output,"%s",s);
fclose(fp_output);
flcose(fp_exp);
return 0;
}
Que proposez vous ?
Merci.
|
|
samedi 19 septembre 2009 à 18:37:06 |
Re : union de deux fichiers

mezaya
|
Pour la copie de ton fichier à la place des fgets et fprintf
Code C/C++ : while( !feof(fp_exp) )
{
char buffer[4096];
unsigned int read = fread( buffer, fp_exp, 1, 4096 );
unsigned int write = fwrite( buffer, fp_output, 1, read );
if( read != write )
{
/* gestion erreur ecriture */
}
}
Voili,Voilou 
|
|
samedi 19 septembre 2009 à 19:11:26 |
Re : union de deux fichiers

boualiasma
|
Bonsoir,
c'est quoi fread et fwrite ? quelle est la différence par rapport au fgets et fprintf ?
Pouvez vous mettez la solution complète ?
Merci.
|
|
samedi 19 septembre 2009 à 21:04:28 |
Re : union de deux fichiers

mezaya
|
le fread et fwrite permet de lire et écrire dans des fichiers grâce à des buffers. ça évite ainsi de lire octet par octet un fichier (ce que fait fgets) et qui est extrêmement long.
donc le code devient :
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
Code C/C++ : int main()
{
FILE *fp_output,*fp_exp;
char s[100];
// CopyFile("input.txt", "output.txt", FALSE); // ???
fp_exp= fopen("exp.txt","r");
fp_output= fopen("output.txt","a");
fprintf(fp_output,"\n");
while( !feof(fp_exp) )
{
char buffer[4096];
unsigned int read = fread( buffer, fp_exp, 1, 4096 );
unsigned int write = fwrite( buffer, fp_output, 1, read );
if( read != write )
{
/* gestion erreur ecriture */
}
}
fclose(fp_output);
flcose(fp_exp);
return 0;
}
Voili,Voilou 
|
|
samedi 19 septembre 2009 à 21:21:16 |
Re : union de deux fichiers

boualiasma
|
Bonsoir,
- Comment la taille de 'buffer' est fixée ?
- Est ce que 'buffer' présente tout le contenu de fichier ?
if( read != write )
{
/* gestion erreur ecriture */
}
- ce test correspond à quoi ? et que'est ce que je mis comme gestion des erreurs ?
Je voulais copier le contenu de fichier 'input.txt' dans le fichier 'output.txt' puis compléter ce fichier 'output.txt' par le contenu de fichier 'exp.txt' .
Est ce que on va utiliser autre buffer ? quelle est la modification apporté sur la solution au dessus ?
Merci.
|
|
samedi 19 septembre 2009 à 21:47:12 |
Re : union de deux fichiers

mezaya
|
je le refais avec les commentaires
Code C/C++ :
void CopieDefichierEntier( FILE* parInput, FILE* parOutput ) // cette fonction copie tout le contenu de parInput dans parOutput
{
while( !feof(fp_exp) ) // feof return 0 si on as pas encore atteint la fin du fichier est (!=0) sinon
{
char buffer[4096];
// on lit 4096 octets qui se trouve dans le fichier que l'on met dans buffer
// la fonction fread renvoie le nombre d'octets effectivement lus
unsigned int read = fread( buffer, fp_exp, 1, 4096 );
// on écrit dans le fichier output le buffer que l'on vient de lire dans le fichier input
// la fonction fwrite retourne le nombre d'octet effectivement écrit
unsigned int write = fwrite( buffer, fp_output, 1, read );
// si on as pas écrit le même nombre d'octet que l'on a lus c'est qui c'est passé une erreur lors de l'écriture
if( read != write )
{
// gestion erreur d'ecriture. exemple :
fprintf( "Erreur ecriture fichier !!" );
exit(0);
}
// on boucle jusqu'a ce que tout le fichier input soit copier dans output
}
}
int main()
{
FILE *fp_input,*fp_output,*fp_exp;
// ouverture des différent fichiers
fp_input = fopen("input.txt","r" ); // ouverture en lecture
fp_exp = fopen("exp.txt","r"); // ouverture en lecture
fp_output= fopen("output.txt","w");// ouverture en écriture supprime le contenu si il existe
// copie du 1er fichier input dans output
CopieDefichierEntier( fp_input, fp_output );
// copie du 2eme fichier exp dans output
CopieDefichierEntier( fp_exp, fp_output );
// on ferme propement tous les handles de fichier ouvert
fclose(fp_input);
flcose(fp_exp);
fclose(fp_output);
return 0;
}
j'espere que ça a répondu a tes question.
je te conseille ce cours de C/C++ de Christian Casteyde très complet Cours C/C++
Voili,Voilou 
|
|
dimanche 20 septembre 2009 à 00:46:52 |
Re : union de deux fichiers

boualiasma
|
Merci beaucoup.
Mais la question qui se pose comment choisir la taille de 'buffer' ? c'est à dire en fonction de quoi ?
votre choix 4096 est au hasard ou bien est calculé ?
Merci.
|
|
dimanche 20 septembre 2009 à 10:33:20 |
Re : union de deux fichiers

mezaya
|
le choix du buufer est lié à la taille des clusteurs du systeme de partition (NTFS, FAT32, ext3, ... ).
sous windows les tailles de cluster par défaut font 4Ko pour le FAT32 et NTFS.
un peu de doc sur les clusteurs
Voili,Voilou 
|
|
Cette discussion est classée dans : fichier, txt, output, quote, fp
Répondre à ce message
Sujets en rapport avec ce message
enregister les resultats dans un fichier txt. [ par ekinoks ]
j'essepaire que vous allé pouvoir m'evité le susside:-/c'est un decrypeteur de fichier, j'aimeré enregistré tout les resultat dans un fichier TXT com
probleme pour ecrire dans un fichier en C [ par kekobaron ]
Bonjour,Je suis novice en C et je suis confronté à un probleme. Je souhaite enregistrer une phrase dans un fichier mais seul le premier mot est enregi
Lecture de fichier TXT [ par beb30 ]
Voila je souhaite faire un programme en C qui me permette de retrouver une information de type Char rentrée manuellement. Je souhaite aller lire ds un
ouverture d'un fichier txt sur visualC++ [ par drcmomo ]
Bonjour s'il vous plait aidez moi je dois ouvrir un fichier txt sur visual mon programme n'arrive pas a ouvrir le fichier. <SPAN style="F
ouverture d'un gros fichier txt ( taille > 3Mo) [ par malouve ]
Bonjour, J'ai a traité des fichiers txt de valeurs dont je ne connais pas le nombre d'elements mais qui font plus de 3Mo. J'ai essayé la fonction fre
traitement simultannée sur des fichiers [ par boualiasma ]
Bonjour, Je voulais faire un traitement en même temps sur un nombre de fichier.J'ai trouvé des difficultés pour résoudre ce problème. Je vous expliq
pb de chargement d'un fichier txt dans un tableau [ par malouve ]
Bonjour, j'ai un problème bloquant dans mon projet et j'ai désespérement besoin d'un coup de main [^^sad2] j'ai fait un traitement sur un fichier de b
Incrementer le nom du fichier d'entrée [ par souffrance ]
Salut ! J'essaie de trouver comment incrémenter le nom du fichier texte d'entrée. En faite, je voudrais que dès que le traitement du premier fichier
Cherche un tuto ! [ par jekburn ]
Hello, Si quelqu'un pouvait me dire ou trouver un tuto sur ces commandes. system("sort fichier.txt >> fichier1.txt"); Cette commande range par ordr
a fonction seekg [ par infodaoudi ]
Bonjour, je'aimerai bien savoir s'il ya un equivalement de la fonction seekg pour un fichier txt. Je m'explique j'ai un fichier txt composé des donnée
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|