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

Messages postés
130
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
8 juillet 2008
- - Dernière réponse : 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!
Afficher la suite 

7 réponses

Messages postés
2
Date d'inscription
mardi 2 mars 2004
Statut
Membre
Dernière intervention
24 mars 2004
0
Merci
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
Commenter la réponse de cs_mayouta
Messages postés
130
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
8 juillet 2008
1
0
Merci
cela ne marche pas. En fait, type incompatible a ce nivo:
identifiant = tabStructToto[i];
Commenter la réponse de themaste
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
5
0
Merci
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
Commenter la réponse de cs_djl
Messages postés
130
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
8 juillet 2008
1
0
Merci
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!!
Commenter la réponse de themaste
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
5
0
Merci
"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
Commenter la réponse de cs_djl
Messages postés
130
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
8 juillet 2008
1
0
Merci
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.
Commenter la réponse de themaste
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
5
0
Merci
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
Commenter la réponse de cs_djl