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 une ligne d'un fichier


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 56
    Par défaut lire une ligne d'un fichier
    Bonjour,

    j'aimerais cree une fonction qui lit une ligne d'un fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void litLigne(int numLigne, char *ligne){
     
    	FILE *f = NULL;
     
    	f = fopen("/file");
    	if(f != NULL){
    		//exit
    	}
    	else{
    		// je ne sais pas quoi mettre ... lol
    	}
    }
    une idée ?

  2. #2
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Bonjour,

    Bah, fgets() pardis
    http://man.developpez.com/man3/fgets.3.php

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 56
    Par défaut
    erf ... merci
    j'ai fais ca ...
    ca marche impec (:, mais comment choisir la ligne ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void readLigneFile(gchar *ligne){
     
    	FILE *fp = NULL;
     
    	fp = fopen("/file", "r");
    	if(fp == NULL){
    		exit(0);
    	}else{
    		fgets(ligne, 80, fp);
    	}
    }

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Tu créé une variable locale et à chaque tour de boucle tu l'incrémente ... bin la suite c'est facile, tu compares la valeur de la variable avec celle du paramètre pis hop tu peut lire la ligne sinon bin tu continue a tourner dans la boucle !

    Mais là tu doit revoir complètement ta fonction !

    Une boucle de ce genre pourrais largement faire l'affaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
       while (fgets (ligne, BUFSIZ, fp))
       {
          if (cpt == ligne_a_lire)
          {
             printf ("%s", ligne);
     
             /* Sortie de la boucle. */
             break;
          }
     
          cpt++;
       }
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 56
    Par défaut
    Salut,

    merci, ca fonctionne tres bien

    mais j'ai un warning pendant la compilation

    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
     
    void readMem(gchar *ligne, int numLigne){
     
    	FILE *fp = NULL;
    	gchar buf[81];
    	int cpt = 0;
     
    	fp = fopen("/proc/meminfo", "r");
    	while(fgets (buf, 80, fp)){
          if (cpt == numLigne){
             strcpy(ligne, strstr(buf, ":") +7);
             break;
          }
          cpt++;
       }
    	fclose(fp);
    }
    et une petite question a part ...

    j'ai deux constantes
    j'ai une fonction qui accepte une chaine de caractere en param, comment fais pour avoir quelques chose comme ca:

    fonction(p1, p2, CONST1."-".CONST2); <<< en php

  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Si tu me donne le warning ce serais plus utile ... et aussi à quelle ligne il correspond !
    En attendant, je pari qu'il viens de là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcpy(ligne, strstr(buf, ":") +7);
    En fait j'aurais fait ca autrement à ta place !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  7. #7
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    "char" à la place de "gchar".

  8. #8
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par Funraill.net
    et une petite question a part ...

    j'ai deux constantes
    j'ai une fonction qui accepte une chaine de caractere en param, comment fais pour avoir quelques chose comme ca:

    fonction(p1, p2, CONST1."-".CONST2); <<< en php
    Si CONST1."-".CONST2 doit faire une concaténation de deux chaines que stock tes constantes, le mieux est de faire la concaténation qui va bien dans un tableau de char puis de la passer en paramètre !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

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

Discussions similaires

  1. Lire une ligne et colonne fichier texte
    Par Naoli dans le forum Général Python
    Réponses: 4
    Dernier message: 24/11/2007, 12h56
  2. Réponses: 3
    Dernier message: 13/11/2007, 15h45
  3. Réponses: 2
    Dernier message: 08/11/2007, 15h33
  4. Lire une ligne d'un fichier
    Par roxtar dans le forum Langage
    Réponses: 3
    Dernier message: 26/06/2007, 00h22
  5. Lire une ligne dans un fichier
    Par dbozec dans le forum Langage
    Réponses: 3
    Dernier message: 03/05/2006, 23h22

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