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

Turbo Pascal Discussion :

[TP] Lire un fichier .txt


Sujet :

Turbo Pascal

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 17
    Par défaut [TP] Lire un fichier .txt
    Bonjour à tous,
    j'aimerais savoir comment faire pour lire des mots dans un fichier texte .txt en dissociant bien les trous blancs (ie: ' ').
    Le problème est qu'avec un readln(f,chaine), il lit toute la ligne du texte donc plusieurs mots à la suite apparaissent...

    Regardez le code 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
     
    var
        s : string;
        f : text;
     
    BEGIN
    Assign(f,'c:\bibi.txt');
    reset(f);
    while not eof(f) do
       begin
          readln(f,s);
          writeln(s); 
       end;     
    END.
    En théorie, il devait afficher mot par mot les éléments du texte mais en vérité, il affiche ligne par ligne les éléments du texte car readln(f,s) lit la chaine de caractère du fichier f jusqu'à un eoln. Donc j'aimerais bien savoir quelle est la commande, ou tout simplement comment faire pour afficher mot par mot les éléments du texte.

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Loe,
    Citation Envoyé par Archy27 Voir le message
    ...
    Le problème est qu'avec un readln(f,chaine), il lit toute la ligne du texte donc plusieurs mots à la suite apparaissent...

    En théorie, il devait afficher mot par mot les éléments du texte mais en vérité, il affiche ligne par ligne les éléments du texte car readln(f,s) lit la chaine de caractère du fichier f jusqu'à un eoln. Donc j'aimerais bien savoir quelle est la commande, ou tout simplement comment faire pour afficher mot par mot les éléments du texte.
    Non, pas "en théorie", mais "ce tu voudrais faire".

    Tu n'as pas le choix, il faut lire chaque ligne, et ensuite la découper en mots.

  3. #3
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    Tu n'as pas le choix, il faut lire chaque ligne, et ensuite la découper en mots.
    rien est impossible en programmation si on a un peu d' imagination.
    regarde un peu ce 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
     
    program fichier;
    uses crt;
    var f:text;
        c:char;
        ch:string;
    begin
    {change le chemin du fichier}
    assign(f,'c:\fichier.txt');
    reset(f);
    while not eof(f) do
     begin
     ch:='';
    {on lit tous les caracteres jusqu' à trouver un espace}
    {A ameliorer si il y' a plusiers espaces entre deux mots}
     repeat
     read(f,c);
     ch:=ch+c;
     until c=' ';
     write(ch);
     delay(100);
     end;
     close(f);
     end.

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Sio,
    Citation Envoyé par darrylsite Voir le message
    rien est impossible en programmation si on a un peu d' imagination.
    regarde un peu ce 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
     
    program fichier;
    uses crt;
    var f:text;
        c:char;
        ch:string;
    begin
    {change le chemin du fichier}
    assign(f,'c:\fichier.txt');
    reset(f);
    while not eof(f) do
     begin
     ch:='';
    {on lit tous les caracteres jusqu' à trouver un espace}
    {A ameliorer si il y' a plusiers espaces entre deux mots}
     repeat
     read(f,c);
     ch:=ch+c;
     until c=' ';
     write(ch);
     delay(100);
     end;
     close(f);
     end.
    Ouais, et les caractères CR, LF, et tous les caractères de ponctuation, ... se retrouvent dans ta chaine.

    Qui plus est, il faudrait de toute manière sécuriser (que se passe-t-il si on a plus de 255 caractères à suivre sans espace, par exemple).

    Et le plus simple est de lire une ligne, et faire une fonction pour la découper en mots, en tenant compte de tous les caractères considérés comme étant des séparateurs de mots (un avantage est qu'on peut plus tard réutiliser cette fonction ).

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 17
    Par défaut
    Ha oui je vois mieux comme cela. Je n'avais pas pensé à additionner 2 chaînes de caractères en commençant par ch := ' '.
    Je pensais que c'était impossible mais en fait non . Merci de votre aide !!

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

Discussions similaires

  1. [Débutant] Lire plusieurs fichiers txt dans un répertoire
    Par leneuf dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 03/10/2006, 12h39
  2. [JAR] Lire un fichier txt dans un Jar
    Par flzox dans le forum Entrée/Sortie
    Réponses: 13
    Dernier message: 28/08/2006, 01h30
  3. Lire un fichier .TXT en donnant une URL
    Par Matt2094 dans le forum Langage
    Réponses: 9
    Dernier message: 03/05/2006, 14h35
  4. Lire un fichier txt par http (C sous Linux)
    Par sleg dans le forum Réseau
    Réponses: 4
    Dernier message: 18/10/2005, 11h07
  5. Réponses: 4
    Dernier message: 05/10/2004, 17h11

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