concaténation de chaînes de caractères, langage C
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

concaténation de chaînes de caractères, langage C



  1. #1
    aureo91
    Invité

    concaténation de chaînes de caractères, langage C


    ------

    Bonjour,
    Je souhaite concatener deux chaine de caracteres, ma fonction str-len() marche très bien pour obtenir la taille, mais voila lorsque j'execute le code ci dessous, j'obtiens un msg erreur de segmentation ...

    Voici mon code :
    Code:
    char* str_cat(char *src1, char *src2)
    /* ------------------------------- */
    {
    printf("probleme au niveau des test donc je sais pas si ma fonction est bonne");
    if(src1=NULL)
    {
    	return src2;
    }
    if(src2=NULL)
    {
    	return src1;
    }
    int taille1=str_len(src1);
    int taille2=str_len(src2);
    int taille3=taille1+taille2;
    char *adr=malloc(taille3*sizeof(char));
    int i=0;
    char* concat;
    for(i=0;i<taille1;i++)
    {
    	concat[i]=src1[i];
    }
    for(i=taille1;i<taille3;i++)
    {
    	concat[i]=src2[i];
    }
        // alloue une zone memoire pour concatener dst et src
        return concat; // a modifier
    }

    -----
    Dernière modification par Jack ; 12/12/2012 à 12h18. Motif: ajout balises code

  2. #2
    Jack
    Modérateur

    Post Re : concaténation de chaînes de caractères, langage C

    On t'a déjà demandé d'encadrer ton code par des balises code. Fais-le!

    Code:
    char *adr=malloc(taille3*sizeof(char));
    tu as oublié la place et la gestion du zéro terminal qui est obligatoire pour les chaines en langage C

    A+
    Dernière modification par JPL ; 12/12/2012 à 13h27. Motif: titre

  3. #3
    invite765732342432
    Invité

    Re : concaténation de chaînes de caractère, langage C

    et tu lis mal le contenu de src2

    PS: Je ne sais pas quel rôle a le C dans tes études, mais si c'est une matière importante, il est IMPERATIF que tu saches faire ces exercices sans aide.
    Apprends à debugger, même avec de simples printf. C'est nécessaire.
    Dernière modification par JPL ; 12/12/2012 à 13h26. Motif: titre

  4. #4
    aureo91
    Invité

    Re : concaténation de chaînes de caractères, langage C

    Merci pour vos réponses,
    Non moi dans mon cursus j'ai commencer à programmer en c#, la j'arrive sur le tas en programmation C il y a encore plein de notion qui me sont etrangeres commme les malloc par exemple ou les pointeurs...
    Je suis en formation ingénieurs alternance.

  5. A voir en vidéo sur Futura
  6. #5
    Jack
    Modérateur

    Re : concaténation de chaînes de caractères, langage C

    Non moi dans mon cursus j'ai commencer à programmer en c#, la j'arrive sur le tas en programmation C il y a encore plein de notion qui me sont etrangeres commme les malloc par exemple ou les pointeurs...
    Parfait! Tu connais donc les principes essentiels de la programmation. Reste à te perfectionner du côté de la gestion mémoire du langage C, aspect qui est plus ou moins masqué en C#.

    A+

  7. #6
    defender19

    Re : concaténation de chaînes de caractères, langage C

    Le problème vient surement du fait que tu déclares un tableau dynamique de taille 3 (adr), mais que tu ne mets rien dedans... Alors que tu cherches à mettre des valeurs dans concat que tu n'as pas alloué en mémoire, ce n'est qu'un pointeur.

    En remplaçant concat par adr, cela devrait mieux marcher...

  8. #7
    Dlzlogic

    Re : concaténation de chaînes de caractères, langage C

    Bonjour,
    J'ai l'impression que c'est un exercice purement théorique, en ce cas, il serait intéressant d'avoir exactement l'énoncé.
    Mais, il y a un point qui me choque : l'allocation mémoire à l'intérieur de la fonction. C'est le meilleur moyen d'oublier de libérer la mémoire lorsqu'on n'en a plus besoin.
    La fonction strcat(char *dest, char *source) bien connue ajoute une copie de source à destination, là vous semblez vouloir créer un nouvelle chaine qui aura pour longueur la somme des deux.

  9. #8
    Chanur

    Re : concaténation de chaînes de caractères, langage C

    Bonjour,
    Dans la deuxième boucle :
    Code:
    concat[i]=src2[i];
    pour scr2, tu ne peux pas utiliser i comme indice. il commence à taille1. Il te faut un indice qui commence à 0.
    A+
    Ce qui se conçoit bien s'énonce clairement ; et les mots pour le dire arrivent aisément.

Discussions similaires

  1. Algorithmes et chaines de caractères
    Par invite3f493caf dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 31/10/2010, 19h03
  2. C : Pointeurs, chaines de caractères et affichage
    Par invitef1d0ad93 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 14/08/2008, 10h24
  3. chaines de caracteres avec mikroC
    Par invite2d9e7c03 dans le forum Électronique
    Réponses: 21
    Dernier message: 07/08/2008, 08h46
  4. Analyse de chaines de caracteres (VB ?)
    Par JLB29 dans le forum Logiciel - Software - Open Source
    Réponses: 11
    Dernier message: 13/10/2007, 10h13
  5. Chaines de caractères/passement de fonctions
    Par invite91a05f0b dans le forum Électronique
    Réponses: 3
    Dernier message: 12/07/2006, 08h06