Question sur les tableaux de caractères en c
Résolu/Fermé
sophie34
-
16 nov. 2009 à 11:04
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 - 16 nov. 2009 à 12:28
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 - 16 nov. 2009 à 12:28
A voir également:
- Question sur les tableaux de caractères en c
- Caractères ascii - Guide
- Caractères spéciaux symboles clavier - Guide
- Tableaux croisés dynamiques - Guide
- Caractères spéciaux - Guide
- Clavier mac caractères spéciaux - Guide
2 réponses
ah ben oui, c'est parce qu'un tableau représentant une chaîne à pour caractères dans la dernière case un '\0', donc voila tout s'explique :)
adns
Messages postés
1094
Date d'inscription
vendredi 23 février 2007
Statut
Membre
Dernière intervention
27 mars 2012
153
16 nov. 2009 à 11:17
16 nov. 2009 à 11:17
Bonjour
Alors plusieurs choses
lorsque tu fais nom[5] = ...
tu lui demande de faire une affectation dans la case 5 du tableau
ton tableau étant un tableau de char tu dois donc lui affecter un char donc nom[0] = 'm'
ensuite les tableaux commence toujours par l'indice 0 donc si tu fais char[5] ton tableau fera 6 cases...
après si tu veux vraiment avoir ce genre de forme pour créer ton tableau voila ce que tu dois faire (enfin si je me souviens bien de la syntaxe :p)
char[] nom = {'m','e','r','c','i'};
La syntaxe est celle pour du java mais cela dois être a peu près la même en c ;)
Adns
Alors plusieurs choses
lorsque tu fais nom[5] = ...
tu lui demande de faire une affectation dans la case 5 du tableau
ton tableau étant un tableau de char tu dois donc lui affecter un char donc nom[0] = 'm'
ensuite les tableaux commence toujours par l'indice 0 donc si tu fais char[5] ton tableau fera 6 cases...
après si tu veux vraiment avoir ce genre de forme pour créer ton tableau voila ce que tu dois faire (enfin si je me souviens bien de la syntaxe :p)
char[] nom = {'m','e','r','c','i'};
La syntaxe est celle pour du java mais cela dois être a peu près la même en c ;)
Adns
loupius
Messages postés
697
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
31 décembre 2017
148
16 nov. 2009 à 12:28
16 nov. 2009 à 12:28
Attention:
donc si tu fais char[5] ton tableau fera 6 cases...
Non, en C, si tu déclares char tableau[5], ton tableau fera 5 cases et pour le parcourir tu devras aller de 0 à 4. Si tu veux déclarer une chaîne de 5 caractères (qui par convention sera terminée par un '\0'), il faudra écrire char chaine[6]. La déclaration pouvant se faire par char chaine[6] = {"merci"} ou plus simplement par char chaine[] = {"merci"} ou plus simplement encore par char chaine[] = "merci".
La déclaration char nom[] = {'m','e','r','c','i'} ne déclare pas un tableau contenant une chaîne de caractères mais seulement un tableau contenant 5 caractères; il n'y a pas d'ajout du caractère terminal '\0'.
Bonne continuation.
donc si tu fais char[5] ton tableau fera 6 cases...
Non, en C, si tu déclares char tableau[5], ton tableau fera 5 cases et pour le parcourir tu devras aller de 0 à 4. Si tu veux déclarer une chaîne de 5 caractères (qui par convention sera terminée par un '\0'), il faudra écrire char chaine[6]. La déclaration pouvant se faire par char chaine[6] = {"merci"} ou plus simplement par char chaine[] = {"merci"} ou plus simplement encore par char chaine[] = "merci".
La déclaration char nom[] = {'m','e','r','c','i'} ne déclare pas un tableau contenant une chaîne de caractères mais seulement un tableau contenant 5 caractères; il n'y a pas d'ajout du caractère terminal '\0'.
Bonne continuation.