Un moyen pratique d'accéder à une structure ?

Un moyen pratique d'accéder à une structure ? - C - Programmation

Marsh Posté le 30-10-2007 à 22:09:28    

Hello, World!

 

Alors voici mon problème, que je vous expose de façon aussi concise que possible :

 

Je viens d'embaucher, et je suis en train de modifier un programme fait sous CVI/Labwindows (c'est du C pour l'instrumentation, par National Instrument).

 

Dans ce programme, j'ai une structure tableau qui contient 19 paramètre, dont un string, quatre "double" et et 14 "int".

 

J'ai donc ma variable TAB avec ses 19 champs :

 
Code :
  1. tableau TAB;
  2. TAB.champ1="nom";
  3. TAB.champ2=0.54;
  4. ...
  5. TAB.champ19=5;
 

arrive un moment dans mon programme où je veux mettre à jour tous les champs de TAB. J'ai les valeurs à mettre dedans bien rangèse dans un coin, et je peux y accéder facilement avec un boucle qui va bien.

 

Du coup, j'aimerais accéder à chacun de mes champs successivement dans une boucle, quelque chose du genre :

 
Code :
  1. for (i=0;i<=18;++)
  2. {TAB.champ"i"=valeur[i];}
 

Sauf que bien sur, écrit comme ça, ça marche pas. Est-ce que quelqu'un aurait une idée de la façon dont je pourrais faire marcher ça, ou alors est-ce que c'est plus simple d'assigner les 19 valeurs à la main ?

Message cité 1 fois
Message édité par hephaestos le 30-10-2007 à 22:10:04
Reply

Marsh Posté le 30-10-2007 à 22:09:28   

Reply

Marsh Posté le 31-10-2007 à 02:54:26    

hephaestos a écrit :

Dans ce programme, j'ai une structure tableau qui contient 19 paramètre, dont un string, quatre "double" et et 14 "int".
 
J'ai donc ma variable TAB avec ses 19 champs :
 

Code :
  1. tableau TAB;
  2. TAB.champ1="nom";
  3. TAB.champ2=0.54;
  4. ...
  5. TAB.champ19=5;


 
arrive un moment dans mon programme où je veux mettre à jour tous les champs de TAB. J'ai les valeurs à mettre dedans bien rangèse dans un coin, et je peux y accéder facilement avec un boucle qui va bien.
 
Du coup, j'aimerais accéder à chacun de mes champs successivement dans une boucle, quelque chose du genre :
 

Code :
  1. for (i=0;i<=18;++)
  2. {TAB.champ"i"=valeur[i];}


 
Sauf que bien sur, écrit comme ça, ça marche pas. Est-ce que quelqu'un aurait une idée de la façon dont je pourrais faire marcher ça, ou alors est-ce que c'est plus simple d'assigner les 19 valeurs à la main ?


Tu peux faire une tableau temporaire avec les adresses des éléments si ils sont du même type... Ce tableau ne sert qu'au traitement en boucle...
 
Mais si les éléments sont de même type, on est en droit de se demander pourquoi ce n'est pas un tableau dès le départ...
 
Si ils sont différents, tu peux utiliser une structure temporaire pour initialiser la structure d'un coup avec '='.  Dans ce cas là, il n'y a pas de boucle...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 31-10-2007 à 07:59:59    

Les éléments sont effectivement de type différents (un *char, quatre réels et 14 entiers).
 
Bon, finalement je vais m'écrire une procédure qui fait ça, c'est peut-être moche mais ça marche...
 
Sinon, vous avez un lien vers un guide du programmeur correct en c ? (je viens de me rappeler des mauvais souvenir de mallocs, après une rapide revue sur le net je réalise que j'ai fait vraiment nimp avec mes pointeurs de string...)

Reply

Marsh Posté le 31-10-2007 à 09:44:45    

hephaestos a écrit :

Les éléments sont effectivement de type différents (un *char, quatre réels et 14 entiers).

 

Bon, finalement je vais m'écrire une procédure qui fait ça, c'est peut-être moche mais ça marche...


C'est OK.

Citation :


Sinon, vous avez un lien vers un guide du programmeur correct en c ? (je viens de me rappeler des mauvais souvenir de mallocs, après une rapide revue sur le net je réalise que j'ai fait vraiment nimp avec mes pointeurs de string...)


Il y a pas mal d'éléments de cette nature sur mon site, notamment dans les sections 'Notes' et 'Codage'... N'hésite pas à montrer des morceaux de codes compilables que tu voudrais améliorer...


Message édité par Emmanuel Delahaye le 31-10-2007 à 09:47:05

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Sujets relatifs:

Leave a Replay

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