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 :

probleme d'écriture d'entier sur un fichier


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 6
    Par défaut probleme d'écriture d'entier sur un fichier
    Bonjour,

    Je suis archi debutant en C ( 1 petite semaine dans les pattes...), et je bloque un peu pour le probleme qui est l'intitulé de mon topic....en effet j'arrive à écrire des chaines de caracteres sur un fichier sans probleme avec la fonction fputs, mais je n'arrive pas à écrire des entiers sur ce meme fichier...
    Evidemment la fonction fputs ne fonctionne pas pour ceux-ci étant faite pour les chaines de caracteres.....mais y aurait-il un equivalent? ou est ce que cela fonctionne differemment pour l'ecriture de valeurs numeriques??
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    /* Definition de la fonction Ajouter renvoyée par le menu principal */
     
    #include <stdio.h>
    #include <stdlib.h>
     
    char* fichierDestination = "c:\\fichier_identite.txt";
    const int OK = 1;
    const int KO = -1;
     
    int saisiePersonne(char*);
     
    int saisiePersonne(char* nomFichier) {
              FILE *fichier;
              char*mode = "a+";
              int  jour ,mois, annee;
              char titre[31], nom[31], prenom[31], nomjf[31], sexe[2];
              long identification;
     
     
     
              fichier = fopen( nomFichier, mode);
              if (fichier == NULL) {
                  printf("Erreur ouverture du fichier : %s", nomFichier);
                  return KO;
              }
     
              puts("Saisie de nouvelle personne!!\n\n");                 //
                                                                         //
              printf("Entrez le numero d'identification : ");            //
              scanf("%ld", identification);                              //
                                                                         //
              printf("Entrez le titre : ");                              //
              scanf("%s", titre);                                        // 
                                                                         //
              printf("Entrez le nom : ");                                //
              scanf("%s", nom);                                          //
                                                                         //
              printf("Entrez le prenom : ");                             //
              scanf("%s", prenom);                                       // Entrée 
                                                                         // Des Valeurs
              printf("Entrez le nom de jeune fille : ");                 // à Ecrire Sur 
              scanf("%s", nomjf);                                        // Le Fichier
                                                                         // 
              printf("Entrez le jour de naissance : ");                  //
              scanf("%d", jour);                                         //
                                                                         //
              printf("Entrez le mois de naissance : ");                  //
              scanf("%d", mois);                                         //
                                                                         //
              printf("Entrez l'annee de naissance : ");                  //
              scanf("%d", annee);                                        //
                                                                         //
              printf("Entrez le sexe : ");                               //
              scanf("%c", sexe);                                         //
     
     
     
             /* fputs(identification, fichier);                          
              fputs("|", fichier);*/
              fputs(titre, fichier);
              fputs("|", fichier);
              fputs(nom, fichier);
              fputs("|", fichier);
              fputs(prenom, fichier);
              fputs("|", fichier);
              fputs(nomjf, fichier);
              fputs("|", fichier);
              fputs(jour, fichier);                                      
              fputs("|", fichier);
              fputs(mois, fichier);
              fputs("|", fichier);
              fputs(annee, fichier);
              fputs("|", fichier);
              fputs(sexe, fichier);
     
              fputc('\n', fichier);
              fclose(fichier);
              puts("\nEcriture realisee avec succes !");
              return OK;
    }
     
     
    int main(void)
    {
        saisiePersonne(fichierDestination);    
        system("pause");
        return 0;
    }
    Merci D'avance

    Cordialement,

    Cedric.

  2. #2
    Membre Expert Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par défaut
    Salut,

    Je crois que fprintf est faite pour toi !

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 6
    Par défaut
    Merci de ta reponse plus que vive....lol

    Je vois dans mon livre de C ( et oui il faut bien ca...)...que fptintf est utilisée dans le cas d'une ecriture formatee dans un fichier....et en faite ma fonction a pour but d'ajouter une ligne a une structure deja mise en place....cette fonction ne va pas supprimer ma structure deja écrite sur le fichier? est ce que je dois utiliser un pointeur qui justement me permettra de faire une ecriture a la suite de cette structure....ou est ce que je peux faire sans? (je vais m'y mettre aux pointeurs....)...



    Cedric.

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Bonjour,
    Tu ne devrais utiliser scanf() ainsi. Ce programme ne résiste pas au test du singe.

    Quant à ton problème, est-ce que fputs() efface quoi que ce soit quand tu écris ? fprintf(), c'est pareil.
    Tant que ton fichier reste un fichier texte, tu peux utiliser fputc(), fprintf(), fputs(), etc. sans problème.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 6
    Par défaut
    oui c'est vrai que pour le fprintf() il y a une part de logique lol...mais bon mieux vaut prevenir que guerir....

    pour la fonction scanf().....que tu me conseillerais-tu d'utiliser a la place?
    et a quel usage celle-ci est-elle destinée?

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    scanf() est une fonction réservée au gourous du C qui savent ce qu'ils font.
    Les deux pires utilisations possibles de scanf() sont:
    1. scanf("%s", ...)
    2. enseigner scanf() aux débutants.

    Tu dois utiliser fgets(chaine, taille, stdin);
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 6
    Par défaut
    Tres bien merci medinoc. Je vais voir ce que cela donne avec fgets().

    L'ecriture fonctionne parfaitement avec fprintf()...je vais voir ce que donne l'utilisation d'un pointeur sur une structure...

    Encore Merci. Et vu l'efficacité des reponses...je dirais a tres bientot


    Cedric.

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/04/2014, 17h45
  2. Probleme conversion chaine en entier sur deux octets
    Par yamina_38 dans le forum LabVIEW
    Réponses: 4
    Dernier message: 06/07/2009, 16h19
  3. problème écriture sur un fichier
    Par drinkmilk dans le forum MFC
    Réponses: 4
    Dernier message: 24/06/2007, 00h08
  4. probleme ecriture sur un fichier :
    Par kespy13 dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 04/04/2007, 01h44
  5. Réponses: 1
    Dernier message: 19/12/2006, 11h18

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