[C] Fonction de concaténation
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

[C] Fonction de concaténation



  1. #1
    Lechero

    [C] Fonction de concaténation


    ------

    Bonjour,

    j'ai eu la correction d'une fonction qui concatène deux chaînes données.

    Or, je ne la comprends pas du tout ! (je me suis permis de mettre en rouge ce que je ne comprends pas).

    Pourriez-vous m'expliquer svp ?
    Code:
    void concatenation(char* c1, const char* c2){
    	while(*c1 && c1++);
    	while(*c2){
    		*c1 = *c2;
    		c1++;
    		c2++;
    	}
    	*c1 = '\0';
    }
    Par avance, merci ! =)

    -----
    A vaincre sans péril, on triomphe sans gloire (Corneille).

  2. #2
    fred1599

    Re : [C] Fonction de concaténation

    Tu ne comprends rien du tout? Tu as lu un cours sur les pointeurs?

    Apparemment je pense que c'est le cours sur les pointeurs que tu ne comprends pas.

    Questions pour pas mâcher le boulot

    1) Que représente pour toi char *c1?
    2) Que représente pour toi *c1?
    3) Que représente pour toi c1++?

  3. #3
    Lechero

    Re : [C] Fonction de concaténation

    char *c1 est un pointeur qui pointe sur une donnée de type char
    *c1 est la valeur de la variable c1
    c1++ : on incrémente c1

    Mais je ne comprends vraiment pas le premier while, sans instructions après, il sert à quoi ? En plus, comment incrémenter un "char" ? Ne serait-ce pas plutôt les indices que l'on incrémente, pour ensuite copier la 2ème chaîne à la fin de la première ?
    A vaincre sans péril, on triomphe sans gloire (Corneille).

  4. #4
    fred1599

    Re : [C] Fonction de concaténation

    Le 1er while c'est un genre de "on ne fait rien tant que l'on a un caractère et que l'on peut incrémenter les cases de c1"

    En plus, comment incrémenter un "char" ?
    Test ce code, tu vas comprendre, on n'incrémente pas un "char", mais une adresse, on passe à l'adresse suivante.

    Code:
    int main(void)
    {
        char ch[] = "Bonjour";
    
        char *p = ch; /* on pointe sur la 1ère adresse de ch, si *p, alors *p vaudra B */
    
        printf("%c 1ère lettre\n", *p);
        p++;
    
        printf("%c après p++\n", *p);
        p++;
    
        printf("%c après p++\n", *p);
        p--;
    
        printf("%c après p--\n", *p);
        *p = 'k';
    
        printf("%s après modification de la lettre\n", ch);
    
        return 0;
    }
    Dernière modification par fred1599 ; 14/01/2013 à 17h48.

  5. A voir en vidéo sur Futura
  6. #5
    Lechero

    Re : [C] Fonction de concaténation

    =))) merci !!

    Donc la fonction fait :
    1) on parcourt toutes les cases de c1, on se place à la fin
    2) on parcourt toues les cases de c2 : on les mets une à une à la suite de c1 en incrémentant chacune des adresses + on met le caractère "fin de chaîne" à la fin de c1+c2=c1.

    Merci beaucoup pour ton mini programme, je vais encore bien m'entraîner
    A vaincre sans péril, on triomphe sans gloire (Corneille).

  7. #6
    fred1599

    Re : [C] Fonction de concaténation

    C'est tout bon

Discussions similaires

  1. concatenation de 10 matrices
    Par invited12fa08c dans le forum Électronique
    Réponses: 1
    Dernier message: 27/04/2011, 07h28
  2. Concaténation matricielle en C++/IT++
    Par inviteb8477130 dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 06/04/2011, 13h48
  3. dimensions et concaténation
    Par invitea767300d dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 24/11/2007, 16h55
  4. Concatenation
    Par invite2b4da655 dans le forum Électronique
    Réponses: 5
    Dernier message: 21/05/2006, 13h06