Salut,
Question de geek pour furieux,
je me suis amusé cette nuit avec un petit code forth dont le but est une simple copie de fichier texte (copie brute (enfin j'espèrais)).
Pour ça j'utiliser un buffer de type chainé
comme celui là :
et je le copie par cette procédure simple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 256 Constant max-line Create line-buffer max-line 2 + allot
seulement voilà ça ne copie pas le caractère fin de ligne...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 : copy-file ( -- ) begin line-buffer max-line fd-in read-line throw while line-buffer swap fd-out write-file throw repeat ;
J'ai pas trouvé pourquoi
le texte d'entrée (je le donne juste parce que ça en fera sourire certains)
j'obtiens dans la copie tout ça sur une seule ligne.Que les puces d'un millier de chiens galleux
infeste le cul de celui qui osera vous gacher ne serai ce
qu'une seule journée de votre année 2007 et que les
bras lui soient trop court pour qu'il puisse se le gratter.
bref si il existe un furieux qui code en forth ansi ou gforth, une aide serait apprécié pour comprendre cette erreur.
Merci
PS: le code presque complet :
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
25
26
27
28
29
30 #! /usr/bin/gforth 0 Value fd-in 0 Value fd-out s" fic.in" r/o open-file throw Value fd-in s" fic.out" w/o create-file throw Value fd-out s" fic.in" open-input s" ffic.out" open-output 256 Constant max-line Create line-buffer max-line 2 + allot ( traitement ) : copy-file ( -- ) begin line-buffer max-line fd-in read-line throw while line-buffer swap fd-out write-file throw repeat ; copy-file fd-in close-file throw fd-out close-file throw bye
Partager