Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1803 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Déclaration de tableau de char

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Déclaration de tableau de char

n°1980167
lassault1
Posté le 01-04-2010 à 19:40:20  profilanswer
 

bonjour
 
Pourquoi dans cette déclaration de tableau de char (que j'ai trouvé dans 1 livre) il n'y a pas le '\0' a la fin ?
 
 
 
Déclaration du livre :
 
char voy[6] = {'a', 'e', 'i', 'o', 'u', 'y'}
 
Déclaration du tuto :
 
chaine1[7];
chaine1[0] = 't';
chaine1[1] = 'a';
chaine1[2] = 'g';
chaine1[3] = 'a';
chaine1[4] = 'd';
chaine1[5] = 'a';
chaine1[6] = '\0';

mood
Publicité
Posté le 01-04-2010 à 19:40:20  profilanswer
 

n°1980169
theshockwa​ve
I work at a firm named Koslow
Posté le 01-04-2010 à 19:44:31  profilanswer
 

le 0 est implicite. Le standard dit que les éléments non précisés lors d'une initialisation de ce genre sont initialisés à nul par défaut.
 
Edit : d'ailleurs, dans ton tuto, ce n'est pas une initialisation mais une suite d'affectations. Prends plutôt l'habitude d'utiliser des initialisations. C'est une bonne pratique.

Message cité 1 fois
Message édité par theshockwave le 01-04-2010 à 19:46:01

---------------
last.fm
n°1980190
lassault1
Posté le 01-04-2010 à 21:16:14  profilanswer
 

Merci,
 
1/ Mais pourquoi une chaine de caractère est pas un tableau ?
 
2/ Dans quel cas on utilise un tableau et dans quel cas on utilise une chaine avec des exemples si possible

n°1980206
breizhbugs
Posté le 01-04-2010 à 22:28:49  profilanswer
 

theshockwave a écrit :

le 0 est implicite. Le standard dit que les éléments non précisés lors d'une initialisation de ce genre sont initialisés à nul par défaut.


Non, c'est parce que c'est un tableau contenant 6 espaces de stockage dans lequel on a mis une lettre par case. Lorsque l'on aura besoin de ce tableau , on utilisera que 1 lettre a la fois.
A ne pas confondre avec une chaine de caractères AZT "à zéro terminal" ou c'est la globalité que l'on peut vouloir souhaiter traiter comme le mot "tagada" du deuxième exemple.

n°1980296
theshockwa​ve
I work at a firm named Koslow
Posté le 02-04-2010 à 11:14:06  profilanswer
 

breizhbugs a écrit :

Non, c'est parce que c'est un tableau contenant 6 espaces de stockage dans lequel on a mis une lettre par case. Lorsque l'on aura besoin de ce tableau , on utilisera que 1 lettre a la fois.


 
Et voilà que je ne sais plus compter, j'avais vu 5 caractères  :sweat:  
en tout cas, le deuxième exemple devrait clairement s'écrire :
 

Code :
  1. const char chaine[] = "tagada";


---------------
last.fm
n°1981070
Kenelm
Posté le 06-04-2010 à 10:12:20  profilanswer
 

lassault1 a écrit :

1/ Mais pourquoi une chaine de caractère est pas un tableau ?
 
2/ Dans quel cas on utilise un tableau et dans quel cas on utilise une chaine avec des exemples si possible

Une chaîne de caractère est, d'une façon ou d'une autre, un tableau de caractères.
 
Sauf que, en raison de leur nature particulière, on spécifie des règles à suivre, comme par exemple de les terminer par un zéro, noté "\0", de façon à ce que cette chaîne respecte une certaine norme, qui permet ensuite d'utiliser des fonctions spécifiques comme "strlen" qui se basent sur cette norme.
 
Mais tout dépend de ce que tu veux stocker. Si c'est du texte, ce sera une chaîne de caractères, qui devra respecter ces normes, mais si c'est des lettres, ce sera un tableau de caractères, qui n'a pas à respecter ces normes. Au final, le conteneur est exactement le même, c'est ce qu'on met dedans et la façon dont on l'utilise qui change.

n°1981109
Lan Wezel
Posté le 06-04-2010 à 10:47:53  profilanswer
 

Citation :


Code :
  1. const char chaine[] = "tagada";




 
Oui mais il veut peut-être pas un objet const.
 

Citation :


Sauf que, en raison de leur nature particulière, on spécifie des règles à suivre, comme par exemple de les terminer par un zéro, noté "\0", de façon à ce que cette chaîne respecte une certaine norme, qui permet ensuite d'utiliser des fonctions spécifiques comme "strlen" qui se basent sur cette norme.  


 
Pour détailler un peu plus, un chaîne de caractères est stockée dans un tableau.  
Toutefois, il est généralement difficile de connaître à l'avance la longueur des chaînes de caractères que tu va stocker (utilisation de scanf pour récupérer des mots sur stdin, lecture de fichier...). C'est entre autres pour cela que les chaînes de caractères s'utilisent de la manière suivante :
 
Tu crées un tableau de taille "suffisante" (le max que tu vas mettre dedans).
Comme le mot est plus court que ton tableau tu le termines pas '\0' afin de ne pas lire trop loin dans le tableau de la mémoire non-initialisée.
Toutefois, il est rare de s'embèter à placer soit-même le '\0', les fonctions standards (strlen, strcat, strcmp, strcpy...) ou encore la lecture dans les flux (scanf, fscanf, scanf) le plaçant toutes seules.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Déclaration de tableau de char

 

Sujets relatifs
probleme d'assignation de valeur avec un tableau dans une classeExporter un tableau Excel 2007 vers Access
[PHP] foreach qui ignore des valeurs d'un tableauAjout d'une valeur dans un tableau dans un tableau
Tableau : Gros décalageTransfert de données d'une feuille excel vers un tableau VBA
Faire un tableau en parsant des chaines issues de pages HTML dynamiquestockage de tableau de structure en mémoire partagée
Comment allouer de la mémoire pour un tableau (malloc)VBA: combiner 2 tableaux excel pour avoir un troisième tableau complet
Plus de sujets relatifs à : Déclaration de tableau de char


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR