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 :

Problème concaténation strcat


Sujet :

C

  1. #1
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 26
    Par défaut Problème concaténation strcat
    Bonjour,

    Je suis en train de réaliser un petit programme utilisant des chaines de caractères.

    J'ai déclaré deux caractères et une chaîne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char touche1;
    char touche2;
    char nombre_a_trouver[3];
    Elles sont ensuite remplies du caractère tapé sur un clavier matriciel.

    Je veux ensuite les concaténer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nombre_a_trouver=strcat(touche1,touche2);
    Problème, le strcat prend en argument des chaines de caractères et non des caractères. Mais moi je ne peux pas les déclarer en chaine de caractère car le clavier renvoie un caractère et c'est tout.

    Comment faire?

    Merci

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    touche1 et touche2 sont des caractères, pas des chaines de caractères...

    strcat s'utilise comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    char message[64] = "";
    char debut[] = "Bonjour, ";
    char fin[] = "monsieur";
     
    printf("message contient : '%s'\n", message);
    strcat(message, debut);
    printf("message contient : '%s'\n", message);
    strcat(message, fin);
    printf("message contient : '%s'\n", message);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    message contient : ''
    message contient : 'Bonjour, '
    message contient : 'Bonjour, monsieur'

  3. #3
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 26
    Par défaut
    Merci,

    Si je ne peux pas utiliser de caractères, comment je fais pour ajouter un caractère à ma chaîne?

  4. #4
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    Merci,

    Si je ne peux pas utiliser de caractères, comment je fais pour ajouter un caractère à ma chaîne?

    Avec une methode barbare ?
    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
     
    char touche1;
    char touche2;
    char nombre_a_trouver[3];
     
    char chaineTouche1[2];
        chaineTouche1[0] = touche1;
        chaineTouche1[1] = '\0';
     
    char chaineTouche2[2];
        chaineTouche2[0] = touche2;
        chaineTouche2[1] = '\0';
     
    strcat(nombre_a_trouver, chaineTouche1);
    strcat(nombre_a_trouver, chaineTouche2);

  5. #5
    Invité(e)
    Invité(e)
    Par défaut
    Attention, il ne faut pas oublier d'initialiser des chaines :
    Citation Envoyé par SofEvans Voir le message
    Avec une methode barbare ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    char touche1;
    char touche2;
    char nombre_a_trouver[3] = "";
     
    char chaineTouche1[2] = "" ;
    chaineTouche1[0] = touche1;
     
    char chaineTouche2[2] = "";
    chaineTouche2[0] = touche2;
     
    strcat(nombre_a_trouver, chaineTouche1);
    strcat(nombre_a_trouver, chaineTouche2);

  6. #6
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 26
    Par défaut
    C'est bon merci à vous 2, la méthode barbare fonctionne bien !

  7. #7
    Invité(e)
    Invité(e)
    Par défaut
    Citation Envoyé par jems87 Voir le message
    C'est bon merci à vous 2, la méthode barbare fonctionne bien !
    Il faut aussi voir que strcat n'est pas forcement la solution qui te convient (en effet, on ne fait pas de la concaténation, mais un simple remplissage)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    char touche1;
    char touche2;
    char nombre_a_trouver[3] = "";
     
    nombre_a_trouver[0] = touche1;
    nombre_a_trouver[1] = touche2;

  8. #8
    Membre chevronné Avatar de cboudy
    Profil pro
    Ingénieur informatique industrielle
    Inscrit en
    Avril 2006
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique industrielle
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 407
    Par défaut
    pour limiter les variables tu peux aussi utiliser un strncat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strncat(nombre_a_trouver, &touche1, 1);
    -> ajoute le premier caractère du tableau qui commence à la même adresse que touche1 (donc touche1)

  9. #9
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 26
    Par défaut
    En effet, cette dernière solution fonctionne aussi et permet de bien limiter les variables. C'est bien utile pour moi qui suit en train de programmer sur un pic.

    Merci

  10. #10
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    Citation Envoyé par mabu Voir le message
    Il faut aussi voir que strcat n'est pas forcement la solution qui te convient (en effet, on ne fait pas de la concaténation, mais un simple remplissage)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    char touche1;
    char touche2;
    char nombre_a_trouver[3] = "";
     
    nombre_a_trouver[0] = touche1;
    nombre_a_trouver[1] = touche2;
    Effectivemment, en reflechissant un peu, c'est cette solution qu'il faut adopter.
    Si les chaine etait variable, strcat serait indiqué, mais la, on sait qu'il ne faut qu'un char ! Donc Mabu a tout a fait raison.

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

Discussions similaires

  1. Problème mémoire, suite de concaténations (strcat)
    Par angioedema dans le forum Langage
    Réponses: 3
    Dernier message: 26/04/2013, 20h05
  2. Problème concaténation excel/vba
    Par rotterdamt dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 28/11/2005, 17h47
  3. Problème concaténation
    Par ericain dans le forum Access
    Réponses: 10
    Dernier message: 22/11/2005, 19h40
  4. Problème Concaténation
    Par Jimmy_S dans le forum C
    Réponses: 7
    Dernier message: 19/10/2005, 15h00
  5. Problème concaténation requête avec ORACLE
    Par kobe dans le forum Bases de données
    Réponses: 2
    Dernier message: 16/08/2005, 11h57

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