Nombre élément tableau structure, fin tableau (en C)

themaste Messages postés 130 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 8 juillet 2008 - 24 mars 2004 à 07:57
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 - 25 mars 2004 à 15:58
Nbjr a tous!
Voila, j'ai du reprendre un vieux source en C, et j'avoue avoir des lacunes.
En fait, j'ai une structure: structToto
Puis j'ai un tableau: structToto *tabStructToto

Ensuite, je remplie mon tableau de n structure, et j'ai donc
tabStructToto[0] qui est rempli
tabStructToto[1] qui est rempli
...
tabStructToto[n] qui est rempli

Ensuite, je fais une boucle while (tant qu'il y a des éléments dans le tableau).
Mon pbl, est que je n'arrive pas a connaitre n en fait. Et je n'arrive pas a savoir koi mettre comme conditions ds ma boucle pour arreter de lire le tableau.

Je me doute que ca doit etre tres con, mais je ne connais pas. Alors si vous pouviez m'aider!!

Merci bcp a vous tous!
A voir également:

7 réponses

cs_mayouta Messages postés 2 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 24 mars 2004
24 mars 2004 à 08:10
bonjour
en faiy c'est assez simple suffit d'avoir une idee
tu declarer un pointeur de type structToto

structToto *identifiant
int n=0; /*pour determiner nb d'elements du tableau*/
int i=0;
while ( identifiant !=NULL)
{
identifiant = tabStructToto[i];
i++;
}

tiens moi au courant si ca marche pas
bon courage
0
themaste Messages postés 130 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 8 juillet 2008 2
24 mars 2004 à 10:50
cela ne marche pas. En fait, type incompatible a ce nivo:
identifiant = tabStructToto[i];
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
24 mars 2004 à 14:21
structToto *tabStructToto est un pointeur

ca ve dir que tu doit faire un malloc pour allouer un tableau

tabStructToto=(structToto *)malloc(n*sizeof(structToto) );

donc le n c'est a toi de le preciser et de le conserver car autrement tu ne peut connaitre la tailled e la zone allouer.

par contre si il s'agit d'un tableau statique

structToto tabStructToto[n];

pour connaitre la taille il suffi de faire par ex

int taille=sizeof tabStructToto / sizeof tabStructToto[0];

dans tout les cas sache qu'il est infiniment plus propre de conserver la taille dans une variable
0
themaste Messages postés 130 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 8 juillet 2008 2
24 mars 2004 à 15:43
ok, c'est ce que j'ai fait en fait du coup. Mais ce que j'aime pas, c'est avoir une variable globale qui traine comme ca...
Enfin, au pire, tant que ca marche!!

Mais si il existe d'otres facon d'obtenir cette BIIIP taille, je suis preneur!!

Merci a vous!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
24 mars 2004 à 16:05
"Mais ce que j'aime pas, c'est avoir une variable globale qui traine comme ca...
"
alors rajoute un indice flag dans ta structure genre un int a valeur booleenne qui indique si la structure est la derniere du tableau
0
themaste Messages postés 130 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 8 juillet 2008 2
25 mars 2004 à 07:29
ok, pas bete pour l'indice.
Mais tout comme la variable globale, ca me donnel'impression que c'est du bidouillage en fait. Enfin, je pensais que tout comme strlen pour les chaines, il y avait une fonction equivalente plus "general" a tout ype d'éléments.
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
25 mars 2004 à 15:58
strlen ne fait que retourner la position du premier \0, un peu comme la solution que je te propose

si tu ve faire plus propre tu fait un tableau de pointeur et en derniere position tu met a NULL
0
Rejoignez-nous