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 :

stocker les données à partir d'un fichier


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 22
    Points : 16
    Points
    16
    Par défaut stocker les données à partir d'un fichier
    bonjour,
    j'ai un problème de stockage des données dans un tableau à partir d'un fichier contenant des double, 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
    void main()
    { 
    int i;
    FILE *p1;
    double t;
    double mm[8];
     p1=fopen(ch,"r");
    i=0;
    while(!feof(p1) && (i<8) ){  
      fscanf(p1,"%lf\n",&t);
      scanf("%lf",&mm[i]);
      i++;}
    fclose(p1);
    for(i=0; i<8; i++)
    printf("%lf ",mm[i]);
    }
    si vous pouvez m'aider à resoudre ce problème je vous remercie d'avance
    youir

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 23
    Points : 22
    Points
    22
    Par défaut
    Déjà dans ton fopen, le premier paramètre n'est pas une chaîne de caractères ( sauf si la variable ch a été déclarée avant mais je la vois pas dans ton main)
    ensuite pourquoi as tu d'un coté un double t dans lequel tu ecris ceux qui entrent depuis le fichier, en les ecrasant successivement , et ensuite tu remplis le tableau mm avec des valeurs lues AU CLAVIER.

    Ton code devrais plutot ressembler à ca:
    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
    int  main(int argc, char** argv)
    { 
    int i=0,j;
    FILE *p1;
    double mm[8];
    if(argc==0) return(1);
    p1=fopen(argv[1],"r");//lire depuis le fichier passé en argument
    while(!feof(p1) && (i<8) ){ 
    fscanf(p1,"%lf\n",&mm[i]);
    i++;}
    fclose(p1);
    for(j=0; j<i; j++)
    printf("%lf ",mm[j]);//si on fait parcourir i jusqu'a 8 alors que le fichier ne contenait pas 8 doubles, on va avoir des valeurs non-initialisee
    return 0;
    }

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 22
    Points : 16
    Points
    16
    Par défaut
    j'ai essayer ton programme est ça marche trés bien merci, mais quand je veux manipuler les valeurs de tableau mm ça marche pas voici le 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
    int  main(int argc, char** argv)
    { 
    int i=0,j;
    FILE *p1;
    double mm[8],kk[8];
    if(argc==0) return(1);
    p1=fopen(argv[1],"r");//lire depuis le fichier passé en argument
    while(!feof(p1) && (i<8) ){ 
    fscanf(p1,"%lf\n",&mm[i]);
    i++;}
    fclose(p1);
    for(j=0; j<i; j++)
    //printf("%lf ",mm[j]);//si on fait parcourir i jusqu'a 8 alors que le fichier ne
    // contenait pas 8 doubles, on va avoir des valeurs non-initialisee
     
    kk[j]=3*mm[j];//la multiplication par 3
    printf("%lf ",kk[j]);
    return 0;
    }
    youir

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 23
    Points : 22
    Points
    22
    Par défaut
    Ta boucle for agit uniquement sur l'intruction suivante : la multiplication des nombres, le printf n'ayant lieu qu'une seule fois apres la sortie de la boucle, et avec la facheuse conséquence que kk[j] est au mieux non-initialisé, au pire hors des limites du tableau

    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
    int  main(int argc, char** argv)
    { 
    int i=0,j;
    FILE *p1;
    double mm[8],kk[8];
    if(argc==0) return(1);
    p1=fopen(argv[1],"r");//lire depuis le fichier passé en argument
    while(!feof(p1) && (i<8) ){ 
    fscanf(p1,"%lf\n",&mm[i]);
    i++;}
    fclose(p1);
    for(j=0; j<i; j++)
    
          {
    //printf("%lf ",mm[j]);//si on fait parcourir i jusqu'a 8 alors que le fichier ne
    // contenait pas 8 doubles, on va avoir des valeurs non-initialisee
    
    kk[j]=3*mm[j];//la multiplication par 3
    printf("%lf ",kk[j]);
          }
    return 0;
    }

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 22
    Points : 16
    Points
    16
    Par défaut
    d'accord mais à ton avie pour résoudre ce problème je dois faire quoi?

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 23
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par youir Voir le message
    d'accord mais à ton avie pour résoudre ce problème je dois faire quoi?
    juste rajouter les deux crochets en bleu dans le code de mon post précedent ...

  7. #7
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 22
    Points : 16
    Points
    16
    Par défaut
    ça marche,merci
    youir

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/08/2012, 15h35
  2. comment stocker les données d'une hashtable dans un fichier?
    Par mokh7 dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 02/04/2008, 02h31
  3. Réponses: 4
    Dernier message: 15/08/2006, 17h40
  4. ajout de données à partir d'un fichier texte
    Par drakenzara dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 14/04/2006, 12h39
  5. Réuperer les données à partir d'un fichier de log
    Par Oberown dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 31/10/2005, 10h08

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