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 :

Lecture d'un fichier texte


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 47
    Par défaut Lecture d'un fichier texte
    Bonjour à tous,

    J'aurais une petite question à propos d'un fichier texte que je souhaite lire dans un but d'interpolation linéaire. Le problème est le suivant:

    Le fichier à lire est dans ce goût là:

    1
    5
    13
    25
    54
    etc.... C'est donc une liste de chiffres toute bête. Mon but est de faire un programme qui me fasse une interpolation linéaire entre chaque terme. Le code que j'ai fait est le suivant:

    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
    #include <stdio.h>
    #include <stdlib.h>
    *
    int main(int argc, char *argv[])
    {
        FILE* fichier = NULL;
        float x = 0;
     
        fichier = fopen("test.txt", "r");
     
        if (fichier != NULL)
        {
            // Boucle de lecture des caractères un à un
            do
            {
                x = fgetc(fichier); // On lit le caractère
                printf("%d, %d \n", x, x+); // Ici, je ne sais pas comment faire comprendre au fichier que pour mon interpolation linéaire, je voudrais qu'il me fasse comme calcul x+((le terme après x)-x)/2
            } while (x != EOF); // On continue tant que fgetc n'a pas retourné EOF (fin de fichier)
     
            fclose(fichier);
        }
     
        return 0;
    }
    Mon principal problème est a priori de lui faire comprendre qu'il doit à chaque fois prendre en compte deux termes de ma liste pour les interpoler. Pourriez vous m'éclaircir sur ce point?
    Si jamais vous voyez un quelconque autre problème, n'hésitez surtout pas à m'en faire part.

    Merci beaucoup à tous.

    Flo

  2. #2
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    Bonjour,

    Il y a effectivement des probleme dans ton code :

    fgetc retourne le code ASCII d'un caractère ... d'un seul caractère.

    Donc 12 sera décomposer en 1 et 2 successivement.


    Le coup du x+, c'était bien tenté, ca m'as fait sourire.


    Tu detecte si le fichier a été correctement ouvert, c'est bien.
    Mais s'il n'est pas ouvert, tu ne saura pas pourquoi. Le mieux et dont de detecter + afficher. Cela se fait, pour les fonctions standart, avec la fonction perror sur laquelle je te laisserai te documenter.

    Voici le code te permettant d'avoir deux lot de 2 nombre pour faire ton interpolation :

    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
     
    #include<stdio.h>
    #include<stdlib.h>
     
    int main(int argc, char *argv[])
    {
        int premier, deuxieme;
     
        FILE *fichier = fopen("test.txt", "r");
        if (fichier != NULL)
        {
            char chaine[100];
            premier = atoi(fgets(chaine, sizeof(chaine), fichier));
     
            while (fgets(chaine, sizeof(chaine), fichier) != NULL)
            {
                deuxieme = atoi(chaine);
                printf("%d\n", premier);
                printf("%d\n\n", deuxieme);
     
                /* Calcul interpolation */
     
                premier = deuxieme;
            }
     
            fclose(fichier);
        }
        else
        {
            perror("Probleme lors d'un fopen dans la methode \"main\" ");
            return EXIT_FAILURE;
        }
     
     
     
        return EXIT_SUCCESS;
    }

    Bonne journée

  3. #3
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 47
    Par défaut
    Hello,

    Je te remercie pour ton aide. Je suis parvenu à résoudre mon problème.

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

Discussions similaires

  1. Lecture d'un fichier texte dans un projet TOMCAT
    Par brice_nice dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 03/07/2005, 15h04
  2. lecture d'un fichier texte
    Par benahpets dans le forum MFC
    Réponses: 5
    Dernier message: 22/06/2005, 11h50
  3. [C#] Lecture d'un fichier texte (farfelu)
    Par choas dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/04/2005, 14h33
  4. Lecture d'un fichier Texte
    Par jcharles dans le forum Bases de données
    Réponses: 8
    Dernier message: 27/10/2004, 14h58
  5. Stockage de données & lecture d'un fichier texte
    Par petitours dans le forum C++Builder
    Réponses: 6
    Dernier message: 13/03/2004, 14h05

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