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 habitué 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
    Points : 163
    Points
    163
    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.
    La science ne connaît qu'une loi: la contribution scientifique.

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    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 189
    Points : 17 141
    Points
    17 141
    Par défaut
    avec une boucle?
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Membre habitué 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
    Points : 163
    Points
    163
    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.
    La science ne connaît qu'une loi: la contribution scientifique.

  4. #4
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    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 189
    Points : 17 141
    Points
    17 141
    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
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  5. #5
    Membre habitué 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
    Points : 163
    Points
    163
    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.
    La science ne connaît qu'une loi: la contribution scientifique.

  6. #6
    Membre expérimenté
    Avatar de sambia39
    Homme Profil pro
    No Comment
    Inscrit en
    Mai 2010
    Messages
    543
    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 : 543
    Points : 1 745
    Points
    1 745
    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
    Celui qui peut, agit. Celui qui ne peut pas, enseigne.
    Il y a deux sortes de savants: les spécialistes, qui connaissent tout sur rien,
    et les philosophes, qui ne connaissent rien sur tout.
    George Bernard Shaw

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