Accés au éléments d'une chaine

Bonjour,
mon problème est le suivant:
je déclare une chaine dans le C: char chaine[50]
ensuite je veux traiter les caractères de ma chaine un a un, normalement j'accéde à chaque élément avec chaine[i] OR chaine[i] me renvoie toujours la chaine initiale à partir de l'indice i????!!
exemple: chaine[50]="bonjour";
chaine[2]="njour"
ce n'est pas normal non???
et je sais que je peux obtenir le caractère si je fais printf("%lc",chaine[i]), mais j'ai besoin des caractères pour les traiter pas seulement pour afficher,
Vous serez vraiment gentils de me résoudre ce problème, merci et bonne journée.
Configuration: Windows XP Internet Explorer 8.0

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. effectivement, chaine[i] est censé être un caractère...

    comment déclares-tu ton tableau exactement ?
    Comment modifies-tu tes caractères ?
    1. pardon, j'ai vu comment tu déclares ta chaine, c'est ok. Mais comment l'initialises-tu ?
      1. Merci de m'avoir répondu,
        alors je l'initialise comme suit: char chaine[100]; comme ma chaine est élément d'une structure, je fais un
        scanf(" %s", &c)
        strcpy(structure->mot,c)
        je ne comprends pas pourquoi ça ne marche pas. bonne journée.
    2. Non, je pense que ça ne va pas marcher comme ça.
      scanf(" %s", &chaine)

      fonctionne pour remplir la chaine.
      Pas pour une structure a priori (même si selon les cas ça peut marcher).

      Il faut remplir séparément les éléments de ta structure, c'est plus prudent.

      Quel est la strcuture dont tu parles ?
      1. struct instr
        {
        struct instr *suiv;
        int prec;
        int succ;
        char mot[100];

        };
        struct instr *Creerinstr (char c[])
        {
        struct instr *P;
        P = (struct instr *) malloc( sizeof(struct instr)) ;
        strcpy(P->mot, c);
        P->prec = 0;
        P->succ = 0;
        P->suiv = NULL;
        return (P) ;
        }
        voilà maintenant l'accés à ch[i] ne marche ps:ça donne tte la chaîne à partie de la case i, merci bien.
        1. ok ça me semble correct.

          Quel est exactement la déclaration de ton ch[] ont tu parles et comment est-ce que tu l'utilises ?