begin process at 2012 05 29 10:25:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Fichier & Disque

 > 

écrire un fichier


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

é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

sebastienmz

en C sil te plait ...
jeudi 14 septembre 2006 à 14:21:45 | Re : écrire un fichier

SAKingdom

Membre Club
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


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,232 sec (4)

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