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

  FORUM HardWare.fr
  Programmation
  C

  Structure chainée

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Structure chainée

n°2072783
maximix
Posté le 29-04-2011 à 16:46:00  profilanswer
 

Bonjour,
 
Je dispose des structures suivantes :

Code :
  1. #define SIZE 5
  2. #define SIZETAB 10
  3. typedef struct
  4. {
  5.     char s[SIZE];
  6.     int next;
  7. }sauvegarde;
  8. typedef struct
  9. {
  10.     int posDispo;
  11.     sauvegarde tab [SIZETAB];
  12. }table;


Il y a donc, un tableau de sauvegarde, qui contient un champ next et une chaine de caractères s.
Mon souhait est d'initialiser une table, avec la fonction suivante :

Code :
  1. void initialisation(table*t)
  2. {
  3.     int i;
  4.     for(i=0;i<=SIZETAB;i++)
  5.     {
  6.           t->tab[i].s="";
  7.           t->tab[i].next=-1;
  8.     }
  9.     t->posDispo=SIZETABLE+1;
  10. }


Sauf que ça ne passe pas à la compilation, il y a un problème à la ligne en rouge, à vrai dire je ne sais pas trop comment faire pour initialiser la chaine s, étant donné qu'elle a déjà une taille définie.  
 
Je bloque sur ça, c'est pourquoi je sollicite votre aide.

mood
Publicité
Posté le 29-04-2011 à 16:46:00  profilanswer
 

n°2072796
shaoyin
Posté le 29-04-2011 à 17:03:45  profilanswer
 

Alors, en "bourrin", il y a :
 

Code :
  1. memset ( (void *) t->tab[i].s , 0 , SIZE );


 
mais si "tab[i].s" est une chaine de caractère, il suffit de mettre '\0' dans le premier octet de la chaine :
 

Code :
  1. t->tab[i].s='\0';

n°2072811
maximix
Posté le 29-04-2011 à 17:28:02  profilanswer
 

J'ai essayé la solution 2, et ça donne ce message d'erreur : incompatible types when assignning to type 'char[5]' from type 'int'
c'est étrange puisque '\0' est entre cotes donc ça devrait être un caractère et pas une entier.
 
Et si je mets :

Code :
  1. t->tab[i].s="0";


il y a l'erreur : incompatible types when assignning to type 'char[5]' from type 'char*'


Message édité par maximix le 29-04-2011 à 17:29:01
n°2072812
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 29-04-2011 à 17:31:11  profilanswer
 

Et t->tab[i].s[0]='\0'; ou encore *(t->tab[i].s)='\0'; ça ne marche pas ?


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
n°2072823
shaoyin
Posté le 29-04-2011 à 17:48:14  profilanswer
 

oups... en effet, j'ai oublié le "[0]" après le 's', d'où l'erreur de type.
 
La solution de WiiDS doit marcher.

n°2072833
maximix
Posté le 29-04-2011 à 17:59:51  profilanswer
 

ah oui ça fonctionne, merci bien.
et pour initialiser avec une valeur donné comme par exemple "abc"  
 
j'essaye de faire : t->tab[i].s="abc"; mais ça ne passe pas, j'ai le même type d'erreur qu'au dessus

n°2072835
shaoyin
Posté le 29-04-2011 à 18:03:23  profilanswer
 

tu dois passer par une fonction, comme "strncpy".


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

  Structure chainée

 

Sujets relatifs
Structure clé , valeur avec ordre et doublonsconvertir une structure X509 en format DER.
problème de structureBien définir une structure pour faciliter son utilisation
Structure de donnéeAfficher la structure fichiers et dossier en XML (php)
structure Vs classe[C] structure de taille variable ?
Structure et powPbs structure en liste chainée et manip de fichier
Plus de sujets relatifs à : Structure chainée


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