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

C Discussion :

Retour à la ligne dans un puts ou dans un printf


Sujet :

C

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2014
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Novembre 2014
    Messages : 367
    Points : 9
    Points
    9
    Par défaut Retour à la ligne dans un puts ou dans un printf
    Bonjour,

    Mon but est de faire en sorte que tout mon texte tienne à l'intérieur d'une page A4 format portrait. Je dois donc éviter les phrases, textes, chaînes de caractères trop longs sur une seule ligne.

    A ce sujet, Est-ce que peux appliquer la méthode suivante à la fois dans les puts, dans les printf et dans les commentaires ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    puts("Bonjour, je cherche une manière"
         "de faire tenir l'ensemble de mon"
         "texte sur plusieurs lignes au"
         "lieu d'une seule.")

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    En fait, ca utilise une propriété des chaines de caractères.
    En C, une chaine litérale est écrite "entre double quotes".
    Plusieurs chaines litérales consécutives sont lues par le compilateur comme une seule chaine, où les morceaux sont collés les uns aux autres, avec un espace (' ')sans rien entre chaque.

    Concrètement, des chaines sont consécutives si elles ne sont séparées, dans le code source, que par des espaces (blancs, tabulations, fins de ligne...).

    C'est nécessaire pour augmenter les possibilités du préprocesseur (notamment les opérateurs # et ##).

    Ainsi, les trois codes suivants sont strictement équivalents.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    puts("Bonjour, je cherche une manière"
         "de faire tenir l'ensemble de mon"
         "texte sur plusieurs lignes au"
         "lieu d'une seule.")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    puts("Bonjour, je cherche une manière" "de faire tenir l'ensemble de mon" "texte sur plusieurs lignes au" "lieu d'une seule.")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    puts("Bonjour, je cherche une manièrede faire tenir l'ensemble de montexte sur plusieurs lignes aulieu d'une seule.")
    ps: merci obsidian pour la correction
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Bonjour,

    Citation Envoyé par leternel Voir le message
    Plusieurs chaines litérales consécutives sont lues par le compilateur comme une seule chaine, où les morceaux sont collés les uns aux autres, avec un espace (' ') entre chaque.
    Absolument pas.
    Les chaînes sont concaténées directement, et heureusement parce qu'une chaîne de caractères ne contient pas forcément du texte dans le sens littéraire du terme. Ajouter un espace modifierait la longueur de la chaîne et introduirait des données qui auraient une signification.

    Le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    puts("Bonjour, je cherche une manière" "de faire tenir l'ensemble de mon" "texte sur plusieurs lignes au" "lieu d'une seule.")
    … donne donc :
    Bonjour, je cherche une manièrede faire tenir l'ensemble de montexte sur plusieurs lignes aulieu d'une seule.
    On peut s'en convaincre en compilant le programme.

  4. #4
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Merci de la correction je m'en souviendrai.

    Je corrige mon message pour ne pas induire de lecteur en erreur
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2014
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Novembre 2014
    Messages : 367
    Points : 9
    Points
    9
    Par défaut
    Désolé, je ne comprends pas. Est-ce que ma version avec les retours à la ligne est validée ou non ?

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Bonjour,

    Citation Envoyé par wallace27 Voir le message
    Désolé, je ne comprends pas. Est-ce que ma version avec les retours à la ligne est validée ou non ?
    L'exemple que tu nous montres dans ton premier commentaire est valide et compilera sans erreur. Ceci te permet donc de mettre en page ta longue phrase… à l'intérieur de ton code source !

    Il en résultera quand même à la compilation une seule longue ligne concaténée, et avec certains espaces manquants. Pour provoquer un retour à la ligne à l'affichage, il faut y insérer le caractère spécial « \n ».
    Ce qui donne :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    puts("Bonjour, je cherche une manière\n"
         "de faire tenir l'ensemble de mon\n"
         "texte sur plusieurs lignes au\n"
         "lieu d'une seule.")

    À noter que je n'ai pas eu besoin de l'ajouter sur la dernière ligne, car puts() ajoute automatiquement ce retour à la ligne en fin de chaîne, à la différence notable de printf().

    Remarquons également que tu pourrais obtenir le même résultat en insérant ces retours à la ligne, tout en conservant ton code sur une ligne unique :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
         puts("Bonjour, je cherche une manière\nde faire tenir l'ensemble de mon\ntexte sur plusieurs lignes au\nlieu d'une seule.")

    … donnera le même résultat.

    Bon courage.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2014
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Novembre 2014
    Messages : 367
    Points : 9
    Points
    9
    Par défaut
    OK merci pour votre aide.

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

Discussions similaires

  1. [MySQL] retour à la ligne et mise en page dans textarea
    Par Tee shot dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 24/03/2007, 22h41
  2. [C#] Retour à la ligne dans un textbox
    Par Oberown dans le forum Windows Forms
    Réponses: 8
    Dernier message: 26/07/2005, 09h46
  3. [C#] Retour à la ligne dans un TextBox MultLine
    Par Oberown dans le forum ASP.NET
    Réponses: 3
    Dernier message: 06/07/2005, 11h39
  4. retoure à la ligne dans un fichier
    Par adilou1981 dans le forum Langage
    Réponses: 4
    Dernier message: 02/12/2004, 15h05
  5. [MFC] Retour à la ligne dans un CEdit
    Par Kant dans le forum MFC
    Réponses: 7
    Dernier message: 18/02/2004, 08h58

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