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 :

Lire des valeurs de type double à partir un fichier


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Par défaut Lire des valeurs de type double à partir un fichier
    Bonjour tout le monde,

    j'essaye de lire des valeurs (double) à partir un fichier mais sans succès!!!
    Aidez moi SVP.

    Je vous transmet un extrait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    FILE *pFile = fopen("data.txt", "r");
    for(i=0; i<n; i++)
    {
    for(j=0; j<m; j++)
    {
    fscanf(pFile, "%s", &tmp);
    x = atof(tmp);
    tab[i][j] = x;
    }
    }
     
    fclose(pFile);
    Si aussi vous me dites comment j'écris ces valeurs dans un autre fichier ???

    MERCI.

  2. #2
    Membre chevronné Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Par défaut
    salut,
    essai ça :
    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
     
    float tmp;
    int i;
    int j;
    float tab[10][10];
     
    FILE *pFile = fopen("data.txt", "r");
    for(i=0; i<n; i++)
    {
    for(j=0; j<m; j++)
    {
    fscanf(pFile, "%f", &tmp);
    tab[i][j] = tmp;
    }
    }
    fclose(pFile);

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Par défaut
    désolé mais ça passe pas !!!

  4. #4
    Membre chevronné Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Par défaut
    Citation Envoyé par poitou86 Voir le message
    désolé mais ça passe pas !!!
    hey, mais faite un peut d'effort : mais bien sure que ça passe pas, il manque la declaration de m et n !!!!!!!!

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Par défaut
    J'ai bien déclaré toutes mes variables ...Je suis pas nul à ce point en programmation!!! ce qui se passe qui ne lit pas bien le fichier pourquoi ? j'en sais pas !!! comment on lit un entier à partir d'un fichier c'est ça la question!!!!

  6. #6
    Membre chevronné Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Par défaut
    Citation Envoyé par poitou86 Voir le message
    J'ai bien déclaré toutes mes variables ...Je suis pas nul à ce point en programmation!!! ce qui se passe qui ne lit pas bien le fichier pourquoi ? j'en sais pas !!! comment on lit un entier à partir d'un fichier c'est ça la question!!!!
    désolé si vous avez pris mes mot de cette façon, mais je voulais juste vous encourager

    Pour votre question, fscanf() utilise les caracteres de conversion, comme %s ou %c

    bon pour les entier il y a %d pour recuperer un entier à partir d'un flux...
    %f pour les float....
    %s chaine de caractere
    %c caractere
    .
    .
    .

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Par défaut
    j'ai essayé avec tous les formats mais toujours pas du résutltat !!!

  8. #8
    Membre chevronné Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Par défaut
    Citation Envoyé par poitou86 Voir le message
    j'ai essayé avec tous les formats mais toujours pas du résutltat !!!
    Est ce que tu peut nous donner le resulat de votre execution ?

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Par défaut
    en effet il affiche des zéros que des zéros !!! l'affichage n'est pas bon

  10. #10
    Membre chevronné Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Par défaut
    Citation Envoyé par poitou86 Voir le message
    en effet il affiche des zéros que des zéros !!! l'affichage n'est pas bon
    !!!! Le Code SVP !!!!

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Par défaut
    j'espère que tu auras une solution . je te joins le fichier à ce message
    MERCI
    Fichiers attachés Fichiers attachés

  12. #12
    Membre chevronné Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Par défaut
    mes remarques:

    1- #include <string.h>
    2- utiliser memset(temp, '0', sizeof(temp)) aulieu de strcpy(temp,"");
    3- On alloue pas un tableau bidimensionel de cette façon, remplacer double **SNR par double SNR[100][100] pour tester.
    4- Comment être sûre que le fichier contient le nombre de lignes voulue ?

  13. #13
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    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
    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
    #include <stdio.h>
    #include <math.h>
    #include <stdlib.h>
    #include <string>h>
    
    #define B  20000000        //la bande passante totale (Hz)
    #define T  295             //la température du système
    #define U  4              //Le nombre des utilsateurs
    #define S  16     
    
    
    int main()
    {
        FILE *oFile, *pFile;
        double Pn;
        double N0;
        int i, j;
        double Pr; //La puissance reçue
        double *SNR;
        char tmp[40];
        double kb = 1.38e-23;
          
        //Calcul la puissance du bruit en Watt
        N0 = kb*T;
        Pn = N0*B;
        
        pFile = fopen("campus_poitiers_1R_1D_0T_mimo.RI_simplifier", "r");
        oFile = fopen("data.txt", "w+");
        
        //Pr = (double *)malloc(U*S*sizeof(double));    
        SNR = (double*)malloc(U*S*sizeof(double));
        if ( SNR == NULL )
          {
              fprintf ( stderr, "\nErreur d allocation memoire\n");
              return EXIT_FAILURE ;
          } 
     
       
        //kb = 138e-25;
        printf("Calcul le SNR :\n");
        //printf("kb = %f, T = %d\n",kb, T);
        //printf("N0 = %f\n", N0);
        //printf("Pn = %f\n", Pn);
        
        for(i=0; i<U; i++)
        {
                 for(j=0; j<S; j++)
                 {
                          strcpy(tmp,"");
                          printf("itération u = %d s = %d \n",i,j);
                          fscanf(pFile, "%s", tmp);
                          Pr = atof(tmp);
                          printf("Pr = %f\n", Pr);
                          SNR[i*S+j] = 10.0*log10(Pr/Pn);
                          printf("SNR = %f\n", SNR[i*S+j]);
                          strcpy(tmp,"");
                          sprintf(tmp, "%f", SNR[i*S+j]);
                          printf(" tmp = %s\n",tmp);
                          fwrite(tmp,8,1,oFile);
                 }
        }
        getchar();
        fclose(oFile);
        fclose(pFile);
    
        free(SNR);
    
        return EXIT_SUCCESS;}
    ca ca devrait marcher...

    Tu peux toujours faire une matrice , mais c'est plus complique du point de vue de l'allocation....

    Pour le format de sortie, tu risques d'avoir des warnings (%f c'est pour les flottants, ou les doubles avant C99). Sinon, si tu te fiches que la longueur des champs soit la meme, mais que la sortie soit optimisee, c'est %g

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Par défaut
    merci. je vais essayer!!!

  15. #15
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Le cast des malloc est inutile en C.
    Il peut cacher un oubli d'unbclusion du fichier .h déclarant malloc .
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/05/2011, 14h15
  2. Réponses: 10
    Dernier message: 01/02/2011, 09h02
  3. Sortie des valeurs de type double
    Par otspot dans le forum C++
    Réponses: 2
    Dernier message: 29/06/2008, 20h26
  4. [VBA-E] Lire des valeurs dans un fichier excel
    Par nicobox dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 11/05/2006, 15h40
  5. stocker des valeurs de type différent
    Par jakouz dans le forum Langage
    Réponses: 3
    Dernier message: 28/11/2005, 09h36

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