Lire un fichier en C mais juste quelques colonnes
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

Lire un fichier en C mais juste quelques colonnes



  1. #1
    invite9c9b9968

    Lire un fichier en C mais juste quelques colonnes


    ------

    Bonjour à tous,

    Voilà je souhaiterais lire un fichier sous C/C++, mais uniquement les deux premières colonnes sachant que le fichier en contient 5 ou 6.

    Alors j'ai pensé à fscanf("%d %lg\n",&truc, &truc2) mais j'ai constaté que ça ne revenait pas à la ligne et que ça continuait de scanner la ligne en cours

    Comment faire ?

    Merci d'avance

    -----

  2. #2
    invite765732342432
    Invité

    Re : Lire un fichier en C mais juste quelques colonnes

    Citation Envoyé par Gwyddon Voir le message
    Voilà je souhaiterais lire un fichier sous C/C++, mais uniquement les deux premières colonnes sachant que le fichier en contient 5 ou 6.
    En C, il n'existe pas de colonnes dans un fichier...
    Un fichier, c'est juste une suite de caractères (ou de bits, selon le mode de lecture). La seule solution pour ne lire QUE les colonnes qui t'intéressent (en supposant que sur chaque ligne tes colonnes ont la même longueur) serait de déplacer le cuseur de fichier au bon endroit (fonction fseek si je me souviens bien), mais je pense que le mieux pour toi (à moins que tes colonnes soient ENORMES), c'est de lire le fichier ligne par ligne (en supposant qu'il y a des retours-chariot), puis de decouper chaque ligne avec un substr...

    PS: Si tu pouvais préciser un peu le contenu de ton fichier, ce serait plus simple pour te répondre...

  3. #3
    invite9c9b9968

    Re : Lire un fichier en C mais juste quelques colonnes

    Le fichier est du type

    0 234.445 1 0 0
    1 254.139 2 0 19
    ...

    Bon en fait j'ai une méthode sale : je lis chaque ligne avec un fscanf(...) et avec des variables poubelles

    Mais c'est saaaaaale

    Merci pour ta réponse

  4. #4
    invite765732342432
    Invité

    Re : Lire un fichier en C mais juste quelques colonnes

    Citation Envoyé par Gwyddon Voir le message
    0 234.445 1 0 0
    1 254.139 2 0 19
    ...
    OK, donc tes colonnes n'ont pas une taille fixe. Il n'y a donc aucun moyen autre que de lire chaque ligne une à une.

    Ensuite, tu peux effectivement utiliser scan (mais j'aime pas trop cette fonction dont j'ai du mal à comprendre parfaitement l'utilisation).
    Ou bien exploser ta chaine à chaque espace et prendre les colonnes qui t'intéressent.

    Question bête: combien de lignes dans ton fichier au grand maximum ?

  5. A voir en vidéo sur Futura
  6. #5
    invite9c9b9968

    Re : Lire un fichier en C mais juste quelques colonnes

    Citation Envoyé par Faith Voir le message
    OK, donc tes colonnes n'ont pas une taille fixe. Il n'y a donc aucun moyen autre que de lire chaque ligne une à une.
    En effet

    Ensuite, tu peux effectivement utiliser scan (mais j'aime pas trop cette fonction dont j'ai du mal à comprendre parfaitement l'utilisation).
    Ou bien exploser ta chaine à chaque espace et prendre les colonnes qui t'intéressent.
    Je crois que je vais en rester au scanf

    Question bête: combien de lignes dans ton fichier au grand maximum ?
    Ça dépend des simulations effectuées auparavant, ça peut aller à 3000 ou 30 000...

    Merci en tout cas pour tes réponses

  7. #6
    invite765732342432
    Invité

    Re : Lire un fichier en C mais juste quelques colonnes

    Citation Envoyé par Gwyddon Voir le message
    Ça dépend des simulations effectuées auparavant, ça peut aller à 3000 ou 30 000...
    OK... donc pas besoin d'une performance éblouissante

    Bonne chance !

  8. #7
    invite9c9b9968

    Re : Lire un fichier en C mais juste quelques colonnes

    Citation Envoyé par Faith Voir le message
    OK... donc pas besoin d'une performance éblouissante
    En effet, ce n'est pas ça qui va être le plus mange-temps

    Bonne chance !
    Merci !

  9. #8
    inviteb9f49292

    Re : Lire un fichier en C mais juste quelques colonnes

    Salut,
    Perso j'utiliserai getline et strtok... Comme ça le jour où tu dois lire plus de colonnes et/ou le délimiteur n'est plus un espace, le boulot est déjà fait.
    ++

  10. #9
    inviteb9f49292

    Re : Lire un fichier en C mais juste quelques colonnes

    Petit détail, getline nécessite la libc GNU (glibc quoi)

  11. #10
    polo974

    Re : Lire un fichier en C mais juste quelques colonnes

    Citation Envoyé par Gwyddon Voir le message
    Bonjour à tous,

    Voilà je souhaiterais lire un fichier sous C/C++, mais uniquement les deux premières colonnes sachant que le fichier en contient 5 ou 6.

    Alors j'ai pensé à fscanf("%d %lg\n",&truc, &truc2) mais j'ai constaté que ça ne revenait pas à la ligne et que ça continuait de scanner la ligne en cours

    Comment faire ?

    Merci d'avance
    d'après la doc
    fscanf("%d %lg %*s\n",&truc, &truc2) doit fonctionner, le %*s\n indiquant une string jusqu'à la fin de ligne qui sera ignorée (merci le *) donc pas de pointeur à donner.

    maintenant, perso, j'utiliserais fgets pour avoir une ligne du fichier dans une string (donc un string en plus à déclarer, mais c'est pas la ram qui manque de nos jours), puis un sscanf dessus pour lire les data dans la string.

Discussions similaires

  1. lire un fichier avec Matlab
    Par inviteb43c2c20 dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 22/12/2013, 13h36
  2. Au secours, juste quelques page en php
    Par invite6e2e40b0 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 2
    Dernier message: 11/11/2007, 09h49
  3. lire un fichier en Matlab
    Par invitef03e0ed1 dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 19/06/2006, 20h31
  4. comment lire les fichier ps
    Par invitefc33073c dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 20/07/2005, 00h33
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...