IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Écriture dans un fichier


Sujet :

C

  1. #1
    Membre éclairé Avatar de chercheur111
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 352
    Par défaut Écriture dans un fichier
    Bonjour,

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    #include <stdio.h>
    #include <time.h>
     
    int main (int argc, char *argv[]) {
        char buff[20];
        struct tm *sTm;
        FILE * f;
     
        time_t now = time (0);
        sTm = gmtime (&now);
        /*while(1)
        {*/
        strftime (buff, sizeof(buff), "%Y-%m-%d %H:%M:%S", sTm);
        f = fopen(argv[1], "w");
        fputs(buff, f);
        //}
       // printf ("%s %s\n", buff, "Event occurred now");
     
        return 0;
    }
    Ma question est la suivante: Comment agir sur ce code pour qu’il écrit en boucle dans le fichier ?


    Merci d'avance pour l'aide.
    Cordialement.

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    avec une boucle?

  3. #3
    Membre éclairé Avatar de chercheur111
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 352
    Par défaut
    Oui, j'aimerais bien avoir ces lignes (par exemple) dans le fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    2015-02-04 12:28:36
    2015-02-04 12:28:33 
    2015-02-04 12:28:35 
    2015-02-04 12:28:36
    Merci.

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Et bien, vas-y, fais-le.
    La boucle en commentaire étant bonne.

    Assures-toi seulement de savoir comment interrompre la boucle (donc, ne pas faire une boucle infinie).
    un simple if (un test adapté) break; ou encore [c]do {ecrire} while (continuer à écrire);
    Il faudra aussi prévoir un moyen de ne pas écrire tous les quart de secondes.

    Choses qui se trouvent dans notre faq, je crois bien

  5. #5
    Membre éclairé Avatar de chercheur111
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 352
    Par défaut
    Il faudra aussi prévoir un moyen de ne pas écrire tous les quart de secondes.
    Justement, j'ai pas pu ouvrir le fichier après la terminaison de l'exécution (il se plante).
    Avez-vous une idée sur comment changer le délai ?

    L'objectif que je vise est de générer un programme qui écrit dans un fichier pour une longue durée car j'ai un traitement à faire sur ce programme lors de l'exécution.

  6. #6
    Membre très actif
    Avatar de sambia39
    Homme Profil pro
    No Comment
    Inscrit en
    Mai 2010
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : No Comment
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 548
    Par défaut
    Bonjour

    Citation Envoyé par leternel Voir le message
    Assures-toi seulement de savoir comment interrompre la boucle (donc, ne pas faire une boucle infinie).
    un simple if (un test adapté) break; ou encore [c]do {ecrire} while (continuer à écrire);
    Il faudra aussi prévoir un moyen de ne pas écrire tous les quart de secondes.
    Choses qui se trouvent dans notre faq, je crois bien
    La remarque est juste.
    il faut également faire attention à l'utilisation de la fonction gmtime(); car elle te donne le temps universel et vue le flag de ta patrie, tu doit être en UTC+1 toute l'année et je ne suis pas sûr que la fonction en question te donne directement le bon fuseau horaire (à vérifier).
    Je te conseille d'utiliser la fonction localtime() / localtime_r() pour tenir compte de ton fuseau horaire. Pour ma part je pense qu'il est préférable de récupérer la date et le temps actuel directement en local exemple
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    #include <time.h>
    #include <stdio.h>
    #include <stdlib.h>
     
    #define _MAX_	 1500
    #define _N_FILE_ "date_heur.txt"
     
    int main( void ){
     
    	FILE *p_file;
    	time_t t_time;
    	unsigned int i = 0;
    	struct tm *s_tm = NULL;
    	char t_format[] ="DD M YYYY THH MM SS\n";
     
    	p_file = NULL;
    	p_file = fopen( _N_FILE_, "a+" );
    	if( p_file == NULL ){
    		perror( "Erreur fichier\n" );
    		exit( EXIT_FAILURE );
    	}
     
    	/*	boucle avec une condition
    	 * de sortie */
    	while( (i++) != _MAX_ ){
    		t_time = time( NULL );
    		s_tm = localtime( &t_time );
    		strftime( t_format, sizeof(t_format), "%d/%m/%Y %H:%M:%S\n ", s_tm );
    		fprintf( p_file, "%5d|\t%s", i, t_format );
    	}
     
    	fclose( p_file );
    	return ( EXIT_SUCCESS );
    }
    à bientôt

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/08/2005, 11h57
  2. [PERL] Problème lecture/écriture dans un fichier
    Par LE NEINDRE dans le forum Langage
    Réponses: 4
    Dernier message: 17/08/2005, 13h15
  3. Problème d'écriture dans un fichier xml
    Par vanoou dans le forum C++Builder
    Réponses: 1
    Dernier message: 13/07/2005, 02h28
  4. Passer à la ligne lors de l'écriture dans un fichier
    Par hams dans le forum Assembleur
    Réponses: 4
    Dernier message: 17/04/2005, 19h25
  5. [JUnit] Junit écriture dans un fichier
    Par mikael35 dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 10/08/2004, 13h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo