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 :

Ecrire sur un fichier


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 36
    Par défaut Ecrire sur un fichier
    Bonjour,
    Voila mes 2 fonctions : la première sert à afficher correctement mon traitement et la 2ième je voudrais qu'elle écrive dans le fichier la même chose que ce qu'elle affiche(la première fonction).
    Mais ça ne marche pas(je fais allusion a la 2iem Fonction il ne me crée pas de fichier (n'écrit pas dedans aussi )(la première est opérationnelle ), donc si vous pouviez m'aider sa serait aimable de votre part.
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    void lire(ptrP p ,ptrC q)
    {
     
    while(p!=NULL)
    {             
                  printf("\n Paquet %d \n ",p->Numpa);
                  q=p->pcmd;
                  while(q!=NULL)
                  {             printf("  Commande %d ",q->Numcom);
                                printf("%s ",q->Ncom);
                                //puts(q->Ncom);
                                printf("%d \n",q->Pcom);
                                q=q->cmdsuiv;
                   }
                  p=p->pqsuiv;
    }
     
    }
    void remplirf(ptrP p ,ptrC q)
    {
       //printf("\nggg\n");
    // resultat de type FILE déclarée globale :) 
    resultat= fopen("D:\resultat.txt","wt"); 
     //printf("\nggg1\n");
    while(p!=NULL)
    {             //printf("\nggg2\n");
                  fprintf(resultat,"\n Paquet %d \n ",p->Numpa);
                  q=p->pcmd;
                  while(q!=NULL)
                  {             //printf("zkima");
                                fprintf(resultat,"  Commande %d ",q->Numcom);
                                fprintf(resultat,"%s ",q->Ncom);
                                //puts(q->Ncom);
                                fprintf(resultat,"%d \n",q->Pcom);
                                q=q->cmdsuiv;
                   }
                  p=p->pqsuiv;
                  //printf("Fichier Traite");
    }
    fclose(resultat);
    //printf("Fichier Ferme");
    }

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 26
    Par défaut
    Citation Envoyé par ClubberGuy Voir le message
    Bonjour,
    Voila mes 2 fonctions : la première sert à afficher correctement mon traitement et la 2ième je voudrais qu'elle écrive dans le fichier la même chose que ce qu'elle affiche(la première fonction).
    Mais ça ne marche pas(je fais allusion a la 2iem Fonction il ne me crée pas de fichier (n'écrit pas dedans aussi )(la première est opérationnelle ), donc si vous pouviez m'aider sa serait aimable de votre part.
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    void lire(ptrP p ,ptrC q)
    {
     
    while(p!=NULL)
    {             
                  printf("\n Paquet %d \n ",p->Numpa);
                  q=p->pcmd;
                  while(q!=NULL)
                  {             printf("  Commande %d ",q->Numcom);
                                printf("%s ",q->Ncom);
                                //puts(q->Ncom);
                                printf("%d \n",q->Pcom);
                                q=q->cmdsuiv;
                   }
                  p=p->pqsuiv;
    }
     
    }
    void remplirf(ptrP p ,ptrC q)
    {
       //printf("\nggg\n");
    // resultat de type FILE déclarée globale :) 
    resultat= fopen("D:\resultat.txt","wt"); 
     //printf("\nggg1\n");
    while(p!=NULL)
    {             //printf("\nggg2\n");
                  fprintf(resultat,"\n Paquet %d \n ",p->Numpa);
                  q=p->pcmd;
                  while(q!=NULL)
                  {             //printf("zkima");
                                fprintf(resultat,"  Commande %d ",q->Numcom);
                                fprintf(resultat,"%s ",q->Ncom);
                                //puts(q->Ncom);
                                fprintf(resultat,"%d \n",q->Pcom);
                                q=q->cmdsuiv;
                   }
                  p=p->pqsuiv;
                  //printf("Fichier Traite");
    }
    fclose(resultat);
    //printf("Fichier Ferme");
    }
    Si resultat est de type FILE, c'est normal, elle devrait être de type FILE*.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Mais ça ne marche pas
    C'est-à-dire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat= fopen("D:\resultat.txt","wt");
    Il ne faut jamais partir du principe que l'ouverture du fichier réussira forcément. Or, ton code ne comporte aucune ligne qui permet de le vérifier. Il faut donc vérifier le pointeur renvoyé par fopen avant de lire/écrire dans le fichier.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 26
    Par défaut
    Citation Envoyé par jeroman Voir le message
    C'est-à-dire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat= fopen("D:\resultat.txt","wt");
    Il ne faut jamais partir du principe que l'ouverture du fichier réussira forcément. Or, ton code ne comporte aucune ligne qui permet de le vérifier. Il faut donc vérifier le pointeur renvoyé par fopen avant de lire/écrire dans le fichier.
    Je viens de faire attention « \r » est le symbole du retour chariot dans « D:\resultat.txt », faites toujours précédé un antislash par un autr antislash

  5. #5
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 36
    Par défaut
    oui il est déjà du type FILE *resultat
    pour zébrure j ai pas bien saisi ce que vous voulez me faire comprendre
    Jeroman ne marche pas c est a dire qu'il me crée pas de fichier et me met dessus le résultat qu'il faut

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 26
    Par défaut
    Citation Envoyé par ClubberGuy Voir le message
    oui il est déjà du type FILE *resultat
    pour zébrure j ai pas bien saisi ce que vous voulez me faire comprendre
    Jeroman ne marche pas c est a dire qu'il me crée pas de fichier et me met dessus le résultat qu'il faut
    Faites un printf("\r") et observez le résultat, contrairement à ce qu'il semble que vous attendiez, ça n'affichera pas « \r » dans la console. Quand on met des « \ » dans une chaine, il faut le doubler : « D:\\resultat.txt »

  7. #7
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 36
    Par défaut
    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
    22
    23
    void remplirf(ptrP p ,ptrC q)
    { FILE* resultat;
       //printf("\nggg\n");
    resultat= fopen("D:\\resultat.txt","wt"); 
     //printf("\nggg1\n");
    while(p!=NULL)
    {             //printf("\nggg2\n");
                  fprintf(resultat,"\n Paquet %d \n ",p->Numpa);
                  q=p->pcmd;
                  while(q!=NULL)
                  {             //printf("zkima");
                                fprintf(resultat,"  Commande %d ",q->Numcom);
                                fprintf(resultat,"%s ",q->Ncom);
                                //puts(q->Ncom);
                                fprintf(resultat,"%d \n",q->Pcom);
                                q=q->cmdsuiv;
                   }
                  p=p->pqsuiv;
                  //printf("Fichier Traite");
    }
    fclose(resultat);
    //printf("Fichier Ferme");
    }
    la fonction sera comme ça ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FTP] Ecrire sur un fichier distant via ftp
    Par jules_diedhiou dans le forum Langage
    Réponses: 2
    Dernier message: 12/05/2009, 14h23
  2. [FPDI] ecrire sur un fichier PDF
    Par erman_yazid dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 17/03/2009, 09h36
  3. ecrire sur un fichier
    Par mams1 dans le forum C
    Réponses: 6
    Dernier message: 19/01/2009, 00h29
  4. lire ecrire sur un fichier Excel
    Par mrkinfo dans le forum C#
    Réponses: 3
    Dernier message: 17/09/2008, 12h01
  5. lire et ecrire sur un fichier Text
    Par touf213 dans le forum C++Builder
    Réponses: 2
    Dernier message: 03/07/2007, 22h33

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