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 :

un texte plusieurs lignes


Sujet :

C

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    dessinateur projeteur VRD
    Inscrit en
    Mars 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : dessinateur projeteur VRD
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2009
    Messages : 32
    Points : 30
    Points
    30
    Par défaut un texte plusieurs lignes
    Bonjour

    je débute dans l'apprentissage du C, et j'aimerai savoir s'il existe une méthode simple pour faire cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    texte = "abcd";
    texte = texte + " efgh";
    texte = texte + " zzzz";
    merci

  2. #2
    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
    Bonsoir,

    La fonction utilisée pour concaténer deux chaînes est strcat. Il vaut mieux utiliser strncat pour éviter les débordements.

    Le plus simple, si tu as beaucoup de chaînes à concaténer, est d'utiliser deux buffers et d'alterner l'un et l'autre comme sources et destination.

    Sinon, tu peux aussi utiliser memmove pour déplacer la chaîne actuelle dans ton tampon et strcpy (resp. strncpy) pour coller ta nouvelle chaîne au début. Voir également memcpy pour éviter de gérer le zéro final.

  3. #3
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Salut,

    la première idée qui m'est venue à l'esprit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <stdio.h>
    #define MAX_SIZE 255
     
    int main(void)
    {
        static char buffer[MAX_SIZE + 1];
     
        snprintf(buffer,MAX_SIZE,"%s%s%s","abcd"," efgh"," zzzz");
        printf("%s\n", buffer);
     
        return 0;
    }
    A+

    Pfeuh

  4. #4
    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
    J'ai soudain un doute : si ton problème est de rédiger une longue chaîne en seul morceau directement dans ton programme, alors tu peux enchaîner plusieurs tronçons entre guillemets en C. Les exemples suivants sont équivalents :

    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    chaine = "undeuxtrois";
     
    chaine = "un" "deux" "trois";
     
    chaine = "un"
             "deux"
             "trois";

    Évidemment, ce n'est valable qu'à la compilation.

  5. #5
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Si l'entier de la chaine est connu à la compilation, il n'y a pas vraiment utilité de concaténer. Peux-tu nous en dire plus sur le problème que tu essaies de résoudre?

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  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
    Citation Envoyé par Thierry Chappuis Voir le message
    Si l'entier de la chaine est connu à la compilation, il n'y a pas vraiment utilité de concaténer. Peux-tu nous en dire plus sur le problème que tu essaies de résoudre?
    C'est utile si cet « entier » est très long. Si c'est une page d'aide, par exemple, il est intéressant de pouvoir la paginer dans le code source tout en conservant une chaîne unique à la compilation. Je pense que c'est ce qu'il cherche à faire. Je peux me tromper.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    dessinateur projeteur VRD
    Inscrit en
    Mars 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : dessinateur projeteur VRD
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2009
    Messages : 32
    Points : 30
    Points
    30
    Par défaut
    merci pour votre aide, je pense avoir la réponse dans vos propositions

    je veux juste mettre mon texte sur plusieurs lignes pour éviter de dépasser les 80 caractères sur une ligne.

    la chaine de caractère est connue...

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/12/2014, 02h32
  2. 8i : sql loader et champ texte sur plusieurs lignes
    Par naonedboy dans le forum SQL*Loader
    Réponses: 1
    Dernier message: 23/11/2005, 10h07
  3. [JButton] Texte sur plusieurs lignes
    Par leminipouce dans le forum Composants
    Réponses: 5
    Dernier message: 19/10/2005, 10h17
  4. [CR10 ]un texte sur plusieurs lignes?
    Par speed034 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 28/09/2005, 07h26
  5. Réponses: 2
    Dernier message: 21/09/2005, 12h18

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