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 :

concatenation de char *


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    593
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 593
    Par défaut concatenation de char *
    Bonjour,

    dans mon programmen en C, j'ai deux variables que je souhaite concatener, ces deux variables sont de type char *.

    je procède comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    char *port;
    char * filter;
     
    sprintf(filter, filter, port);
    cependant a l'excution de ce code j'ai une erreur segmentation fault.
    Comment faire pour concatener deu pointeur?

    merci

  2. #2
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Par défaut


    tu veux donc concatener des pointeurs? euh? j'ai du mal a te suivre la .

  3. #3
    Membre éclairé
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    593
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 593
    Par défaut
    lol, je me suis mal expliquer.

    j'ai un char * toto qui pointe sur toto.
    et un autre char * titi qui pointe su titi.

    Moi, je voudrais que *toto pointe sur tototiti.

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Si c'est juste pour concaténer, fais ça avec strncat().
    Evidemment, le buffer de réception devra avoir été alloué et être suffisamment grand...

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 225
    Par défaut
    Ou bien tu te fait la concaténation à la main , c'est à dire enlever le 0 de toto et déplacer titi vers l'adresse de la fin de toto .
    Celà devrait marcher .

  6. #6
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    En C99 en utilisant les VLA:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    const char *toto="toto";
    const char *titi="titi";
    char temp[strlen(toto)+strlen(titi)+1];
    sprintf(temp,"%s%s",toto,titi);
    toto=temp;

    En ANSI-C:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    const char *toto="toto";
    const char *titi="titi";
    char *temp=calloc(strlen(toto)+strlen(titi)+1,1);
    sprintf(temp,"%s%s",toto,titi);
    toto=temp;
    en n'oubliant pas de libérer la mémoire allouée dynamiquement.

  7. #7
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Citation Envoyé par Dark_Ebola


    tu veux donc concatener des pointeurs? euh? j'ai du mal a te suivre la .
    Oui j'allais faire la meme remarque.

    Les variables de type char * ne sont pas des chaines

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/06/2009, 11h35
  2. [Preprocesseur] Concatenation de char
    Par TabrisLeFol dans le forum C
    Réponses: 17
    Dernier message: 22/01/2007, 19h53
  3. Concaténer un char et un num dans une variable
    Par ade05fr dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 24/10/2005, 16h32
  4. concatenation de char*
    Par wamania dans le forum C++
    Réponses: 19
    Dernier message: 05/08/2004, 17h01
  5. Réponses: 2
    Dernier message: 01/07/2004, 11h36

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