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

Lisp Discussion :

Imprimer itérativement une chaîne de caractère dans un fichier


Sujet :

Lisp

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2024
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2024
    Messages : 5
    Par défaut Imprimer itérativement une chaîne de caractère dans un fichier
    Bonjour, j'aurai besoin d'aide sur un exercice, il m'est demandé de faire un programme qui imprime itérativement une chaîne de caractère dans un fichier, voilà ce que j'ai fait :

    (defun print-alphabet (filename)
    (setq fichier (open filename
    :direction :output
    :if-does-not-exist :create
    :if-exists :supersede))
    (setq code-char 1)
    (loop
    (cond ((> code-char char-code-limit) (return))
    (t
    (princ code-char fichier) ; Code
    (princ #\Tab fichier)
    (princ (code-char code-char) fichier) ; Caractre
    (princ #\Tab fichier)
    (princ (format nil "#\\~a" (code-char code-char)) fichier) ; Reprsentation CLisp
    (terpri fichier) ; Aller la ligne
    (setq code-char (1+ code-char)))))
    (close fichier))

    Cependant, on me dit qu'il y a des effets indésirables càd que ma fonction a un effet non souhaité sur le top-level. Or, je ne vois pas trop ce que je devrais changer. (ps : je ne dois pas utiliser la fonction "let")

  2. #2
    Nouveau candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2018
    Messages : 3
    Par défaut
    Bonjour,

    Un peu tard pour votre exercice, mais j'aurais utilisé la macro , qui va toujours fermer le descripteur de fichier, même si une erreur apparaît pendant l'exécution du code qu'elle protège.

    https://lispcookbook.github.io/cl-cookbook/files.html

    On peut également déclarer des variables de départ avec (avec ).

    https://lispcookbook.github.io/cl-co...iteration.html

    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
     
    (defun print-alphabet (filename)
      (with-open-file (fichier filename 
                               :direction :output
                               :if-does-not-exist :create
                               :if-exists :supersede)
     
        (loop
          :with code-char = 1
          ;; :if (> code-char char-code-limit)
          :if (> code-char 100)
            :do (return)
          :else
            :do
               (princ code-char fichier) ; Code
               (princ #\Tab fichier)
               (princ (code-char code-char) fichier) ; Caractre
               (princ #\Tab fichier)
               (format fichier "#\\~a" (code-char code-char)) ; Reprsentation CLisp
               (terpri fichier) ; Aller la ligne
               (setq code-char (1+ code-char)))
     
        ))
    On peut utiliser .

    Utiliser WITH-OPEN-FILE et LOOP…WITH nous a permis de ne pas utiliser LET.

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/12/2009, 15h39
  2. Comment écrire une très longue variable dans un fichier ?
    Par hijodelanoche dans le forum Langage
    Réponses: 8
    Dernier message: 17/11/2005, 17h12
  3. Réponses: 7
    Dernier message: 27/09/2005, 12h54
  4. Réponses: 11
    Dernier message: 30/08/2005, 15h47
  5. [langage] Sauter une ligne en ecrivant dans un fichier
    Par mickey02 dans le forum Langage
    Réponses: 3
    Dernier message: 17/03/2005, 19h02

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