Gros doute sur une structure...

Gros doute sur une structure... - C++ - Programmation

Marsh Posté le 28-02-2003 à 00:18:38    

Bonjour,
j'ai une structure

Code :
  1. typedef struct _Arc{
  2.   struct _Arc * suiv;
  3.   struct _Arc * prec;
  4.   char pere[3];
  5.   char donnee[3];
  6.   char fils[3];
  7. } Arc;


 
dans un fichier .h
dans mon fichier .c, je veu afficher chacun des 3 champs char de la structure, sachant que j'ai un pointeur sur le type Arc: Arc * arc_courant.
 
Quand je fais

Code :
  1. printf("%s",arc_courant->pere);
  2. ou
  3. printf("%3s",arc_courant->pere);


ca ne marche pas et ca m'affiche TOUT mes 3 champs.
 
C'est le résultat attendu, mais ca me parait trop MAGIQUE.
Alors j'aimerai avoir une explication.
 
Pour m'assurer du bon résultat sans ambiguité, j'ai affiché caractère par caractère et là ca fonctionne.
 
Merci beaucoup d'avance

Reply

Marsh Posté le 28-02-2003 à 00:18:38   

Reply

Marsh Posté le 28-02-2003 à 00:36:32    

Spydurmen a écrit :

Bonjour,
j'ai une structure

Code :
  1. typedef struct _Arc{
  2.   struct _Arc * suiv;
  3.   struct _Arc * prec;
  4.   char pere[3];
  5.   char donnee[3];
  6.   char fils[3];
  7. } Arc;


 
dans un fichier .h
dans mon fichier .c, je veu afficher chacun des 3 champs char de la structure, sachant que j'ai un pointeur sur le type Arc: Arc * arc_courant.
 
Quand je fais

Code :
  1. printf("%s",arc_courant->pere);
  2. ou
  3. printf("%3s",arc_courant->pere);


ca ne marche pas et ca m'affiche TOUT mes 3 champs.
 
C'est le résultat attendu, mais ca me parait trop MAGIQUE.
Alors j'aimerai avoir une explication.
 
Pour m'assurer du bon résultat sans ambiguité, j'ai affiché caractère par caractère et là ca fonctionne.
 
Merci beaucoup d'avance


 
Allouer 3 cases à ton tableau signifie que tu ne pourra mettre que 2 lettre dedans et à la dernière case tu dois mettre le caractère '\0' (plus prosaïquement la constante 0).
 
Je suppose que tu as oublié ces caractères de fin de chaine.
 
edit : t'as de la chance, ça aurait pu essayer d'afficher la moité de l'espace d'adressage de l'application.


Message édité par nraynaud le 28-02-2003 à 00:38:02
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed