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 :

erreur de chiffre dans l'ecriture d'un fichier ?


Sujet :

C

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut erreur de chiffre dans l'ecriture d'un fichier ?
    bonjour tous,

    j'écris des données dans des fichiers texte mais j'ai une erreur dans l'ecriture.

    lorsque j'affiche dans la console la variable "timeCalculation" j'ai des nombre qui sont compris entre 0 et 100 mais quad je regarde dans mes fichiers texte alors j'ai des valeurs du genre -3456776543

    or avant l'ecriture j'ai bien verifié la valeur dans la console....

    savez vous où est mon erreur?

    merci d'avance

    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
     
    for (int k=0;k<2;k++)
    {
    if (compteur==0)
    {
    char extension2[5] = ".dat";
    char nameOfFileA[50]= "Time_IncrementTime";
    char bufferA[100];
    FILE * fileA;
    sprintf(bufferA,"%s%d%s",nameOfFileA,k+1,extension2);
    //printf("timeCalculation....");
    fileA = fopen(bufferA,"w+");
    fprintf(fileA,"%d %d \n",timeCalculation,incrementTime);
    fclose(fileA);
    }
    else
    {
    char extension2[5] = ".dat";
    char nameOfFileA[50]= "Time_IncrementTime";
    char bufferA[100];
    FILE * fileA;
    sprintf(bufferA,"%s%d%s",nameOfFileA,k+1,extension2);
    //printf("timeCalculation....");
    fileA = fopen(bufferA,"a");
    fprintf(fileA,"%d %d \n",timeCalculation,incrementTime);
    fclose(fileA);
    }
    }

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 123
    Par défaut compilation
    Bonjour,
    J'ai compilé votre exemple avec gcc version 3 et il y a une erreur de compilation.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for(int k=0;k<2;k++)
    ...

  3. #3
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    - @olivieram :
    J'ai compilé votre exemple avec gcc version 3 et il y a une erreur de compilation.
    Cette manière de déclarer la variable k est légale en C99

    - Sauf erreur de ma part, ce code est simplement équivalent à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for (int k=0;k<2;k++)
    {
      char bufferA[100];
      FILE * fileA;
      sprintf(bufferA,"Time_IncrementTime%d.dat",k+1);
      fileA = fopen(bufferA,compteur==0 ? "w+" :"a");  // pourquoi "w+" et pas "w" ?
      fprintf(fileA,"%d %d \n",timeCalculation,incrementTime);
      fclose(fileA);
    }
    - Maintenant, cela n'explique pas le disfonctionnement observé sur lequel il est difficile de dire quelque chose puisqu'on n'a même pas la déclaration de timeCalculation (est-ce un int ?) pas plus que le printf() qui, lui, est censé afficher la bonne valeur.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    merci de prendre le temps de m'aider

    Citation Envoyé par diogene Voir le message
    - @olivieram :
    Cette manière de déclarer la variable k est légale en C99
    deja par securité je fais faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int k=0;
    for (k=0;k<2;k++)
    {
    }
    Citation Envoyé par diogene Voir le message
    Maintenant, cela n'explique pas le disfonctionnement observé sur lequel il est difficile de dire quelque chose puisqu'on n'a même pas la déclaration de timeCalculation (est-ce un int ?) pas plus que le printf() qui, lui, est censé afficher la bonne valeur.
    - time calculation est le double
    - en fait la principale partie de mon code est du C++ et je n'ai pas fait un printf, juste un cout et ce cout m'affiche bien la bonne valeur

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 123
    Par défaut C99
    Citation Envoyé par diogene Voir le message
    - @olivieram :

    Cette manière de déclarer la variable k est légale en C99
    Bonjour diogene,

    Il n'y a pas une erreur de ma part, la variable k déclarée en int ne compile pas gcc 3 avec cette commande:
    gcc test.c

    Le compilateur affiche un texte d'erreur 'for' loop declared outside C99.
    Peut-être que l'erreur n'a pas été vue par l'utilisateur à recompilation. Et sa version ne change plus. Nous n'avons pas de détails, là-dessus.

    J'ai précisé que c'était GCC ainsi que sa version. Si vous souhaitez des précisions sur ma version de GCC n'hésitez pas.

    En tout cas, si en C99 que cela fonctionne, c'est que l'utilisateur est en C99, mais je ne sais pas. Cela n'est pas précisé.

    Et effectivement, j'avais remarqué déjà l'absence de timeCalculation parce qu'il est peut-être évident pour l'utilisateur que c'est un int.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    %d fonctionne pour les double? ou que pour les int ?

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 123
    Par défaut
    Citation Envoyé par 21did21 Voir le message
    %d fonctionne pour les double? ou que pour les int ?
    pour les int, pour les doubles c'est %lf.
    Bon courage,
    et excusez nous pour cette bagarre

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    Citation Envoyé par olivieram Voir le message
    pour les int, pour les doubles c'est %lf.
    super! je pense que mon probleme est ici
    je vais tester et je vous informé

    Citation Envoyé par olivieram Voir le message
    et excusez nous pour cette bagarre
    mdr ce n'est pas grave

    Citation Envoyé par olivieram Voir le message
    Bon courage
    merci
    A+ tout le monde, je vous tiendrai informé


    EDIT:

    mon probleme venait de %lf à la place de %d , merci beaucoup

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

Discussions similaires

  1. [XL-2003] empecher l'ecriture de lettres /chiffres dans cellules
    Par sharox dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/06/2014, 10h37
  2. Réponses: 4
    Dernier message: 30/11/2008, 19h04
  3. [debutant] sauter une ligne dans l'ecriture d'un fichier
    Par nadhem dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 09/08/2006, 09h51
  4. Erreur type interdit dans __property
    Par Neilos dans le forum C++Builder
    Réponses: 4
    Dernier message: 11/01/2005, 21h45
  5. [Servlet][Compilation] Erreur de compil dans code servlet
    Par gandalf_le_blanc dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 13/05/2004, 10h17

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