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


Sujet :

C

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 10
    Points : 5
    Points
    5
    Par défaut lecture d'un fichier
    Salut tout le monde.

    J'essaie de me déplacer dans un fichier ligne par ligne mais je n'y arrive pas.
    j'utilise la fonction fseek() avec fgets() mais elles me font un peu n'importe quoi.

    Ce que je voudrai c'est entré un numéro de ligne et lire cette ligne. Rien de plus.

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(int argc, char* argv[])
    {
        char A_caractere[30]={0};
        FILE *fichier=NULL;
     
        fichier=fopen("mots.txt", "r");
     
        if(fichier != NULL)
        {
            puts("ouverture réussi");
     
            fseek(fichier, 0, 3); // par exemple lire la ligne 3
     
            fgets(A_caractere, 30,fichier);
     
            printf("%s", A_caractere);
        }
     
        else puts("impossible d'ouvrir le fichier");
     
        fclose(fichier);
     
        return 0;
    }

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 813
    Points : 7 102
    Points
    7 102
    Par défaut
    Je ne crois pas que vous ayez compris le sens de fseek, simplement un coup de fgets et un compteur doivent faire l'affaire.

    fgets lis une ligne, vous ajouter 1 à votre compteur.

    Un truc de ce genre, en ce qui me concerne j'aurais créé une fonction, mais soit, dans une fonction principale, si vous voulez

    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 (void)
    {
        int counter = 0;
        char line[50];
     
        FILE *f = fopen("test.txt", "r");
        if (f == NULL)
            exit(-1);
     
        while (fgets(line, 50, f) != NULL){
            counter += 1;
            if (counter == 3){ /* si ligne 3, on lit la ligne */
                puts(line);
                break;
            }
        }
     
        fclose(f);
     
        return 0;
    }
    Bonne continuation...
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Merci pour t'as reponce fred1599.

    Le coup du compteur est ce qui me faut. J'avais pensé compter les retours à la ligne sinon.

    Juste pour confirmation avec la fonction fseek() enfait elle ne peut prendre que trois valeurs dans son paramètre origine.
    SEEK_SET, SEEK_CUR, SEEK_END qui valent respectivement 0, 1, 2.

    Moi je croyais qu'on pouvait marquer directement le numero de ligne...

    J'y retourne merci encore.

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 813
    Points : 7 102
    Points
    7 102
    Par défaut
    fseek est un peu plus complexe que cela, tu dois bien comprendre la notion de pointeur.

    On déplace un pointeur de fichier de n octets à partir d'une certaine position (début, position actuelle ou fin de fichier).

    Tu peux lire beaucoup de documentations françaises (si tu ne comprends pas l'anglais) afin de comprendre son intérêt et les paramètres dont cette fonction a besoin. Je n'inventerais rien de plus...
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

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

Discussions similaires

  1. Lecture d'un fichier .dbf
    Par San Soussy dans le forum Autres SGBD
    Réponses: 8
    Dernier message: 07/07/2004, 16h30
  2. Réponses: 6
    Dernier message: 02/09/2003, 15h12
  3. Lecture et ecriture fichier .ini
    Par despe dans le forum C
    Réponses: 6
    Dernier message: 23/07/2003, 20h40
  4. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 4
    Dernier message: 05/02/2003, 08h54
  5. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2002, 10h24

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