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 :

récupérer des données en C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Par défaut récupérer des données en C
    Bonjour,

    Je souhaite recuperer des donnees d un fichier texte mais ces donnees sont eparpillees dans le fichier...
    Voici un bout de progamme que j ai commence a ecrire mais il ne fonctionne a l execution....

    Je voudrais utliser f read aussi, ca serait peut etre plus simple mais je ne sait pas comment fonctionne cette fonction...
    Pouvez vous m aidez s il vous plait?

    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
    #include <stdlib.h>
    #include <stdio.h>
     
    int main()
    {
    FILE* fichier = NULL;
    char temperature[]="";
    char x[]="";
    fichier = fopen("K345_040.DAT", "r+");
    fseek(fichier,183,SEEK_SET);
    fread(&temperature,9,1,fichier);
    fseek(fichier,1015,SEEK_SET);
    fgets(x,8,fichier);
    printf("%s %s\n",x,temperature);
    system("pause");
    return 0;
    }
    et voici le type de donnees

    Messnr.: 001 Datum: 23.09.2008 Zeit: 14:58:57
    Keithley:
    0101 T01 0.00000 °C 0102 T02 15.47087 °C 0103 ---- ---.----- ----
    0104 ---- ---.----- ---- 0105 ---- ---.----- ---- 0106 ---- ---.----- ----
    0107 ---- ---.----- ---- 0108 ---- ---.----- ---- 0109 ---- ---.----- ----
    0110 ---- ---.----- ----

    Druck:
    P01: 49.5647
    PKAM: 44.1536

    PSI:
    0101 PK 48.92505 kPa 0102 PK 44.00981 kPa 0103 PK 44.11922 kPa
    0104 PK 49.56470 kPa 0105 PK 48.95871 kPa 0106 PK 44.07714 kPa
    0107 PSON 44.14447 kPa 0108 PBAR 49.56470 kPa 0109 P01 49.56470 kPa
    0110 PK 49.56470 kPa 0111 PSON 94.71083 kPa 0112 P 49.56470 kPa
    0113 P 49.56470 kPa 0114 P 94.71083 kPa 0115 P 94.71083 kPa
    0116 PKAM 94.71083 kPa

    Sondengeometrie:
    X Y Z Alpha Beta R Gamma Achse W
    -140.00 0.00 0.00 90.00 0.00 0.00 -180.00 0.00


    Messnr.: 002 Datum: 23.09.2008 Zeit: 14:59:02
    Keithley:
    0101 T01 0.00000 °C 0102 T02 17.79391 °C 0103 ---- ---.----- ----
    0104 ---- ---.----- ---- 0105 ---- ---.----- ---- 0106 ---- ---.----- ----
    0107 ---- ---.----- ---- 0108 ---- ---.----- ---- 0109 ---- ---.----- ----
    0110 ---- ---.----- ----

    Druck:
    P01: 49.5610
    PKAM: 44.1423

    PSI:
    0101 PK 48.83718 kPa 0102 PK 44.02294 kPa 0103 PK 44.12394 kPa
    0104 PK 49.56100 kPa 0105 PK 48.85402 kPa 0106 PK 44.07344 kPa
    0107 PSON 44.17444 kPa 0108 PBAR 49.56100 kPa 0109 P01 49.56100 kPa
    0110 PK 49.56100 kPa 0111 PSON 94.70713 kPa 0112 P 49.56100 kPa
    0113 P 49.56100 kPa 0114 P 94.70713 kPa 0115 P 94.70713 kPa
    0116 PKAM 94.70713 kPa

    Sondengeometrie:
    X Y Z Alpha Beta R Gamma Achse W
    -135.00 0.00 0.00 90.00 0.00 0.00 -180.00 0.00

  2. #2
    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
    un fread te lit en binaire.

    Là de toute évidence tu as un fichier formatté.

    Il vaut mieux le lire en format (fscanf), ou mieux, fgets pour lire une ligne, puis sscanf pour décoder la ligne...

  3. #3
    Membre émérite Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Par défaut
    Il faut aussi allouer des tableaux d'une taille pouvant contenir ( au minimum ) la ligne la plus longue de ton fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #define LINESIZE 80+1
     
    <...>
     
    char tab[LINESIZE] ;

  4. #4
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fseek(fichier,183,SEEK_SET);
    fseek sur un fichier texte ne peut avoir comme offset que 0 ou une valeur obtenue par la fonction ftell.
    Pour se positionner, lire les lignes ou les caractères jusqu'à la position désirée (on peut alors lire et stocker celle-ci par ftell et l'utiliser ultérieurement pour se replacer à cette position par fseek).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char x[]="";
    ...
    fgets(x,8,fichier);
    x est un tableau de 1 caractère, insuffisant pour stocker une ligne. La deuxième valeur (ici 8) dans fgets doit être le nombre de caractères réservés par le premier argument (ici x)

  5. #5
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Par défaut
    j ai essayer autre chose, mais ca ne fonctionne pas non plus....

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    #include <string.h>
    #include <stdlib.h>
    #include <stdio.h>
     
    int main()
    {
        FILE* fichier = NULL;
        char texte[100]="";
        char *temperature;
     
        fichier = fopen("K345_040.DAT", "r");//ouverture du fichier
     
        do//je fais une boucle pour afficher toutes les donnees du fichier
        {
     
     
              /temperature = strstr( "texte","T02");//on cherche dans la chaine la chaine T02
              fgets(temperature,10,fichier);//je veux afficher que les carateres qui se trouve apres T02
              printf("%s\n",texte);
     
     
     
        }while (fgets(texte,100,fichier)!= NULL);
     
     
     
     
     
        system("pause");
        return 0;
    }

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    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 395
    Par défaut
    Le pointeur temperature ne pointe sur rien du tout lors de ton fgets()...
    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.

Discussions similaires

  1. Récupérer des données dans excel
    Par alexia2 dans le forum MFC
    Réponses: 1
    Dernier message: 19/05/2005, 15h34
  2. Récupérer des données via le port usb
    Par matmuth dans le forum C++Builder
    Réponses: 12
    Dernier message: 11/05/2005, 16h34
  3. Comment récupérer des données de Outlook Express ?
    Par frenchsting dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 29/04/2005, 11h07
  4. Récupérer des données Excel vers Interbase ...
    Par Djedjeridoo dans le forum InterBase
    Réponses: 2
    Dernier message: 20/07/2003, 18h16
  5. cherche module ou langage pour récupérer des données audio..
    Par Ry_Yo dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 12/05/2003, 17h44

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