bonjour,
je suis complètement bloqué depuis plusieurs jours sur un exercice.
Il s'agit de découper un fichier nommé alphabet.txt qui contient tous les caractères utilisés en français sous différentes représentation en 2 fichiers , l'un comprenant les codes numériques correspondants et l'autre les caractères en représentation lisp.
voici mon code :
le problème est sur la gestion de fin de fichier.
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 (defun alphabet (fichier) (setq f (open fichier :direction :input :if-does-not-exist :error)) (setq code "") (setq char "") (loop (cond ((null code)) ) (setq code (open "alphabet_code.txt" :direction :output :if-does-not-exist :create :if-exists :append)) (prin1 (read-from-string (read-line f nil nil) nil nil) code) (terpri code) (close code) ) (close f) (setq f (open fichier :direction :input :if-does-not-exist :error)) (loop (cond ((null char)) ) (setq char (open "alphabet_char.txt" :direction :output :if-does-not-exist :create :if-exists :append)) (prin1 (code-char (read-from-string (read-line f nil nil) nil nil)) char) (terpri char) (close char) ) (close f) )
le premier fichier (alphabet_code.txt) se fait correctement mais l'erreur qui est générée a la fin de la première boucle empêche la suivante de se faire.
les options pour gérer ceci dans les fonctions read-from-string et read-line semblent inactives.
j'ai essayé différentes combinaisons avec nil dans l'expression (read-from-string (read-line f nil nil) nil nil) , mais rien n'y fait.
Suivant ces combinaisons , soit c'est une erreur qui dit que le stream d'entrée est épuisé soit que nil n'est pas string
Pouvez vous n'aider car je ne peut plus avancer.
merci
Partager