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

clarabella 32 -  
Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

5 réponses

Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
 
effectivement, chaine[i] est censé être un caractère...

comment déclares-tu ton tableau exactement ?
Comment modifies-tu tes caractères ?
0
Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
 
pardon, j'ai vu comment tu déclares ta chaine, c'est ok. Mais comment l'initialises-tu ?
0
clarabella 32
 
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.
0
Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
 
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 ?
0
clarabella 32
 
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
 
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 ?
0