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 :

bien utiliser getline et sscanf


Sujet :

C

  1. #1
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 11
    Par défaut bien utiliser getline et sscanf
    Bonjour à tous

    J'ai du mal à maitriser le langage C. Je souhaiterais utiliser un fichier txt généré. Pour exemple, on va prendre un fichier texte avec:
    a 1 2
    b 2 3
    c 3 4
    d 4 5
    e 5 6


    Je souhaiterais extraire chaque ligne du fichier texte, et extraire chaque chiffre de chaque ligne et les mettre dans un nouveau tableau

    donc voici mon code (qui ne marche pas:

    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
    #include <stdio.h>
    #include <stdlib.h>
     
     
    int main ()
    {
      FILE * f = fopen("datatest.txt","r");
      if (f==0) {printf("error"); return;}
      char array[20];
      ssize_t read;
      int i=0,j=0;
      while ((read=getline (&array,20,f)) != -1) 
        {
          sscanf (read,"%d %d",&i,&j);
          printf ("numeros %d et %d\n",i,j);
        }
      fclose(f);
    }

    Je sais que je dois remplacer i et j par un tableau, mais je n'y arrive pas trop

    Pourriez vous m'apporter votre aide ? S'il y a un moyen + simple de le faire, je suis tout ouie également !

    merci

  2. #2
    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
    As-tu lu la page manuel de getline() ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssize_t getline(char **lineptr, size_t *n, FILE *stream);
    getline() lit une ligne entière dans stream et stocke l'adresse du tampon contenant le texte dans *lineptr. Le tampon se termine par un caractère nul et inclut le caractère « saut de ligne » s'il y en a un.

    Si *lineptr vaut NULL, getline() alloue un tampon pour recevoir la ligne. Ce tampon devra être libéré par le programme utilisateur. (La valeur dans *n est ignorée).
    Alternativement, avant d'appeler getline(), *lineptr peut contenir un pointeur vers un tampon alloué par malloc(3) et de taille *n octets. Si le tampon n'est pas suffisant pour recevoir la ligne saisie, getline() le redimensionne avec realloc(3), mettant à jour *lineptr et *n comme il se doit.

    Quoi qu'il en soit, en cas de succès, *lineptr et *n seront adaptés afin de rendre compte respectivement de l'adresse et de la taille du tampon.

    En cas de succès, getline() et getdelim() renvoient le nombre de caractères lus, séparateur inclus, mais sans compter le zéro terminal. ...
    Les deux fonctions renvoient -1 en cas d'échec de lecture de la ligne (condition de fin de fichier incluse)

    Son schéma d'emploi est donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    char *array = NULL;
    size_t longueur = 0;
    ....
    while ((read=getline (&array,&longueur,f)) != -1) 
        {
           ....
        }
    free(array);
    Dans la boucle, il faut décoder chaque ligne (qui se trouve dans array) en sautant le début.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sscanf (array,"%*s%d%d",&i,&j);

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

Discussions similaires

  1. [MySQL] Bien utiliser addslashes
    Par Ice-tea dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 19/10/2006, 16h06
  2. document pour bien utiliser pgadmin
    Par hama dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 11/11/2005, 11h36
  3. [Optimisation] Comment bien utiliser le StringBuffer?
    Par mathieu dans le forum Langage
    Réponses: 4
    Dernier message: 17/05/2004, 14h22
  4. Comment bien utiliser ce forum ?
    Par Alcatîz dans le forum Pascal
    Réponses: 0
    Dernier message: 21/04/2004, 16h37

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