Accueil > Forum > > > > écrire un fichier
écrire un fichier
jeudi 14 septembre 2006 à 12:02:55 |
écrire un fichier

sebastienmz
|
bonjour TOut le MOnde jai faite un programme de traitement de texte avec dev cpp et ma question est : Je lance mon programme ... je dit d'écrire dans un fichier .. mais il écrit le fichier quand le programme se ferme et pas quand il devrait l'écrire ! Qu'es qui ce passe?
|
|
jeudi 14 septembre 2006 à 13:23:05 |
Re : écrire un fichier

luhtor
|
ajoutes un flush lorque tu veux qu'il écrive sur le disque dur.
ofstream file(...);
file << "coucou" << flush;
Mais c'est normal qu'il écrive par paquets et non a chaque fois que tu ajoutes un mot ou un caractère.
|
|
jeudi 14 septembre 2006 à 13:30:41 |
Re : écrire un fichier
|
jeudi 14 septembre 2006 à 14:21:45 |
Re : écrire un fichier

SAKingdom
|
Quand le programme se ferme uniquement? Tu utilise fopen? Si oui, a tu ajouté fclose quand tu as fini avec le fichier? Sinon, c'est sûr qu'il y aura problème. C++ (@++) ___________________________________________ Les plus grands esprits trouvent toujours une solution
|
|
jeudi 14 septembre 2006 à 15:36:33 |
Re : écrire un fichier

sebastienmz
|
oui jutilise fopen et il y a un close quand j'ai plus besoin d'écrire dans mon fichier je vous passe le code
:
FILE *file;// créé une variable ressource
int temp; //variable temp pour getw
int sizeFile=0; //taille du fichier
int sizeMot=0; //taille du mot a rechercher
char motSeek[100]; //mot a rechercher
char fRead[100]; //fichier lu
int nbFind=0; //nombre de fois trouvé
int i; //pour le for
char fin[100];
file=fopen("C:\\log.txt","rb"); //on ouvre le fichier en binaire
while (!feof(file)) { //on trourne jusqu'a la fin du fichier
temp = getw( file ); //on li le fichier
printf( "%d \n",temp);
sizeFile++; //on incrémente la taille du fichier
}
printf(" %d",sizeFile);
sizeFile = sizeFile *4; //on convertis les bit en octet
printf(" %d",sizeFile);
close(file); // on ferme le fichier
file=fopen("C:\\log.txt", "r"); //on ouvre le fichier en lecture seul
printf("\n\n> Mot recherch%c ? ", 130); //on affiche
gets(motSeek); //on lit le mot qui faut chercher
fflush(stdin); //on vide le buffer du clavier
sizeMot= strlen( motSeek ); //la taille du mot a rechercher
for (i = 0; i <= (sizeFile - sizeMot); i++) { //on tourne
fseek(file,i,0); //on place de pointer sur le fichier avec l'offest de i
fgets(fRead, sizeMot+1, file); // on lit le un mot
if(! ( strcmp(fRead, motSeek) ) ) { //on compare le mot lu et le mot rechercher
nbFind++; // on incrémente
}
}
close(file);
file=fopen("C:\\log2.txt", "w"); //on ouvre le log2.txt en mode écriture
fseek(file,0,0); //on pojnte sur le début du fichier
sprintf(fin, "Nombre de fois trouvé : %d \n", nbFind); //dans f on met nombre de fois trouvé : nbfind
fputs(fin,file); //on écrit dans log2.txt
fflush(stdout);
close(file);
//on vide le buffer du clavier
printf(" %d",nbFind); //on afficher combien de fois trouvé
system("PAUSE");
return 0;
|
|
vendredi 15 septembre 2006 à 02:05:42 |
Re : écrire un fichier

AlexN
|
Je te propose une version qui me semble plus courte, pas forcément plus efficace mais moins il a de lignes, plus les erreurs sont groupées :
// Compte le nombre d'occurences d'un mot dans un fichier // Un mot est une suite de caractères alphabétiques (a-zA-Z) encadrée par deux caractères parmi // le debut de fichier, la fin de fichier ou un caractère non-alphabétique #include <stdio.h> #include <stdlib.h> #include <string.h>
void usage (char **argv) { printf ("Usage : %s MotAChercher FichierSource FichierRésultat\n", **argv); exit (EXIT_SUCCESS); } void erreur (char *err, char *f) {
char msg[100]; sprintf (msg, "%s %s", err, f); perror(msg); exit (EXIT_FAILURE); }
int main(int argc, char *argv[]) {
FILE *f; char *mot; int i = 0, occ = 0, c; char rep[100];
if ( argc != 4 ) usage(argv); if ( !(mot = (char *) malloc (strlen(argv[1]) + 1)) ) { perror("malloc"); exit (EXIT_FAILURE); } if ( !strcpy (mot, argv[1]) ) { perror("strcpy"); exit (EXIT_FAILURE); } // Ouvrir le fichier source if ( !(f = fopen (argv[2], "r")) ) erreur("Problème pour ouvrir en lecture le fichier", argv[2]);
// Compter while ( ( c = fgetc (f) ) != EOF ) { // c'est long if ( !mot[i] && !isalpha(c) ) { occ++; i = 0; } // Trouvé ! else if ( c != mot[i] ) i = 0; else i++; }
if ( fclose(f) == EOF ) erreur("Problème pour fermer le fichier", argv[2]); // Ouvrir le fichier cible if ( !(f = fopen (argv[3], "w")) ) erreur("Problème pour ouvrir en écriture le fichier", argv[3]); sprintf (rep, "Mot '%s' trouvé %d fois dans le fichier %s.\n", mot, occ, argv[2]); free(mot); if ( fputs(rep, f) == EOF ) { perror("fputs"); exit (EXIT_FAILURE); }; if ( fclose(f) == EOF ) erreur("Problème pour fermer le fichier", argv[3]); // Resultats puts(rep); // sprintf (rep, "cat %s", argv[3]); // system (rep);
return EXIT_SUCCESS; }
Si tu veux les accents et d'autres exotismes, tu modifies la condition dans le while pour inclure les caractères que tu veux inclure dans tes mots. Le debut et la fin c'est du décor, le milieu c'est la partie qui compte.
|
|
samedi 16 septembre 2006 à 03:14:20 |
Re : écrire un fichier

AlexN
|
petite correction : printf ("Usage : %s MotAChercher FichierSource FichierRésultat\n", *argv); au lieu de printf ("Usage : %s MotAChercher FichierSource FichierRésultat\n", **argv); La version avec deux étoiles provoque une erreur de segmentation en voulant afficher les usages.  Non contente d'insulter l'utilisateur qui se trompe dans les arguments, cette fonction plante le programme pour être sûre qu'il ne bossera pas...
|
|
Cette discussion est classée dans : fichier, programme, écrire
Répondre à ce message
Sujets en rapport avec ce message
programme à faire [ par cmoa ]
bonjour , j'ai un programme que je ne sais pas écrire (j'y connais rien)voici le sujet:écrire 1 programme qui lit le contenu d'1 fichier(source écrit
écrire quelque chose dans un fichier [ par rafmos ]
Je suis en train de développer un programme pour une bibliothèque en ligne qui permet d'écrire dans un fichier la longueur, la largeur, l'épaisseur, l
détection d'un mot dans un fichier [ par stan000 ]
Bonjour,J'aurais besoin d'aide pour réaliser un programme ou pour connaitre la démarche à suivre.J'ai un fichier texte contenant plusieurs lignes dont
écrire dans un fichier sans réécraser [ par yepla75 ]
Salut,Pour mettre à jour un fichier F1 (modification d'un caractère en plein milieu par exemple), existe-t-il une manière de procéder "simple" en inte
probleme avec la detection d'un fichier [ par sergedes ]
Bonjour, Je voudrais faire détecter la présence d'un fichier sur le disque dur, je m'explique. Je veux modifier le contenu d'une impression. Je
Donner une version à son programme [ par Ilmen_ ]
Salut. Sur nombre de programmes, on trouve une version, une description, un copyright ainsi que quelques autres informa
Lancer un fichier sans stopper le prog [ par takecontroll ]
Bonjour, Je développe actuellement un petit programme en C++ qui est amené à changer l'extension d'un fichier puis à le lancer.j'exécute le fichier p
passWord et login [ par snpier wolf ]
bon soir tout le monde,j'ais un petit problème..je veux fair un programme en DEV-C++ qui crée en fichier txt et qui le cripte sa c bon.Mais le problem
programme en C [ par cheup ]
bonjour,j'ai un projet à réaliser en info en C sous linux.cependant je ne suis pas très doué.il faut ke je fasse un programme permettant de reviser le
Livres en rapport
|
Derniers Blogs
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 REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
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
|