Chaine de caractères en C
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Chaine de caractères en C



  1. #1
    invite953f8104

    Chaine de caractères en C


    ------

    Bonsoir,
    Je me tourne vers vous car j'ai un problème de programmation en C. Je programme un PIC 18f4525 en langage C.Le but de ma fonction est de pouvoir afficher une chaine de caractère sur un écran.

    J'aimerais que ma fonction de présente sous la forme suivante : Chaine_char("valeur a afficher");

    Dans cette fonction je fais appel à la fonction d'affichage d'un caractère(qui est crée et qui marche!) mais je n'arrive pas à pointer sur la 1ère valeur, puis la seconde, etc... jusqu'à la fin....

    Un petit peu d'aide de votre part ne serait pas de refus!

    Merci beaucoup beaucoup

    A+

    -----

  2. #2
    invite5637435c

    Re : Chaine de caractères en C

    Bonsoir,

    avec quel compilateur C travaillez-vous?

  3. #3
    invite15928b85

    Re : Chaine de caractères en C

    Bonsoir.

    Il faut se souvenir qu'en C, une chaîne de caractères est en réalité un tableau de caractères commençant à l'indice 0 et se terminant par le caractère NULL (=0). De plus, un tableau n'est pas passé par valeur mais par adresse. Une possibilité d'écriture de la fonction Chaine_char() est donc :

    void Chaine_char (char *s)
    {
    while( *s != NULL )
    putchar( *s );
    s++;
    }

    L'adresse s est passée sur la pile; il n'y a aucune contre-indication à l'incrémenter dans la fonction.

    Au revoir.

  4. #4
    invite953f8104

    Re : Chaine de caractères en C

    Avec le compilateur C MCC18 de microchip.

    J'ai trouvé un code sur le net, il rassemble a cela:

    Chaine_char(" Titi Toto ");

    void Chaine_char(const char *s)
    {
    while(*s) {putchar(*s++);}
    }
    putchar étant ma fonction d'affichage d'un seul caractère.

    Mais cela ne marche pas....

    Merci d'avance

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

    Re : Chaine de caractères en C

    Re :

    éventuellement enlever le "const" : me souviens plus si placé comme cela, il s'applique au pointeur ou à l'objet pointé.

    Il y a une erreur de compilation ?

  7. #6
    invite5637435c

    Re : Chaine de caractères en C

    Une chaine de caractères est décrite sous forme d'un tableau:

    Code:
    char mon_texte[9] = {d, a, r, k, m, a, l, l, \0};
    qui peut aussi s'écrire:

    Code:
    char mon_texte[9]="darkmall";
    Pour accéder à ce tableau on peut faire:

    Code:
    mon_texte[0]='d';
    mon_texte[1]='a';
    ...........
    mon_texte[8]='l';
    le caractère \0 est le caractère de fin de chaine, il ne faut pas oublier de le compter dans le nombre d'éléments alloués au tableau (soit 9 au total).

    On peut aussi recomposer la chaine de ce texte par le biais d'un pointeur.

    Code:
    char str_cpy(char * dest, char * source)
    {
        int i;
        
        for(i = 0; source[i] != '\0'; i++)
            dest[i] = source[i];
        
        dest[i] = '\0';
        
        return dest;
    }
    dest est un buffer qui maintenant contient la chaine de caractères recomposée par la fonction.
    source pointe sur la premiere cellule du tableau de caractères.

  8. #7
    invite5637435c

    Re : Chaine de caractères en C

    Citation Envoyé par Fanch5629 Voir le message
    Re :

    éventuellement enlever le "const" : me souviens plus si placé comme cela, il s'applique au pointeur ou à l'objet pointé.
    il faut l'écrire si le texte est stocké en mémoire flash.

    déclaré tel que:
    Code:
    const char *text  = "darkmall";
    et ensuite:

    Code:
    void Chaine_char(const char *s)

  9. #8
    invite953f8104

    Re : Chaine de caractères en C

    Oulààà merci de toutes ces réponses!

    Citation Envoyé par Fanch5629 Voir le message
    Re :

    éventuellement enlever le "const" : me souviens plus si placé comme cela, il s'applique au pointeur ou à l'objet pointé.

    Il y a une erreur de compilation ?
    J'ai enlevé mais cela n'a rien changé.

    Warning à la compilation "Warning [2066] type qualifier mismatch in assignment"
    La warning pointe sur le moment ou j'appelle ma fonction!?! je sais pas du tout ce que cela signifie je n'ai jamais eu ca..!

    Mon appel est fait comme ca Chaine_char(" Salut ");

    Et cela m'affiche 'g'....

    A+ merciiii

  10. #9
    invite953f8104

    Re : Chaine de caractères en C

    Ahhh j'ai trouvé, j'ai dû écrire : Chain_char(const rom *chaine);

    Et ca marche! Le 'g' je sais pas d'oû il vennait mais étant donné que ma phrase ce terminait par un " " (espace)et que j'avais oublié d'incrémenter l'endroit de la nouvelle écriture je ne voyais jamais rien...

    Merci à tous et très bonne soirée!

Discussions similaires

  1. Script chez octave : programme avec chaîne de caractères.
    Par invite92876ef2 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 21/03/2007, 10h58
  2. les caractères...
    Par invitef250e6b8 dans le forum Biologie
    Réponses: 3
    Dernier message: 19/11/2006, 13h37
  3. PIC : Chaine de caractères
    Par Toufinet dans le forum Électronique
    Réponses: 2
    Dernier message: 24/05/2006, 18h49
  4. LCD 4*80 caractères ?
    Par invite5ef05993 dans le forum Électronique
    Réponses: 0
    Dernier message: 06/05/2006, 16h21
  5. PIC: Gestion de chaîne de caractères.
    Par invite4c7a167b dans le forum Électronique
    Réponses: 1
    Dernier message: 24/05/2004, 15h13
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...