Bonsoir tout le monde,

Voila j'ai fait une petite fonction qui calcule le nombre d'enregistrements d'une table quelconque. Je l'ai compilé sans faute mais le problème est qu' l'execution il me donne toujours 1 alors que dans la table il ya plus d'1 enr.
Voici le code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define MAXENR 30 // taille maxmumun de la table
 
struct t_enr // une structure qui permet d'encoder un numero matricule et un nom
    { int matr; char nom[30];};
 
    void remplirTable(struct t_enr* t) // Une procédure qui permet d'encoder 
                                       // et la condition d'arrêt est matr = 0
    {
      int i=0;
      printf(" Matricule: ");
      scanf("%d", &t[i].matr);
      while( t[i].matr != 0)
      {
	printf(" Nom: ");
	gets(t[i].nom);
	printf(" Matricule: ");
	scanf("%d", &t[i].matr);
 
      }
    }
 
    int Haut(struct t_enr* t) /* Voila la fonction qui me permet de calculer la taille de la table. 
                                 Elle returne le numero du dernier enregistrement qui correspond 
                                 à la taille de la table*/
    {
     int h=1;
     while (t[h].matr) h++; return h-1;}
 
 
 
void main() // ma fonction main()
{
 
   struct t_enr tb[MAXENR];
 
   remplirTable(tb); // je remplis la table
 
   int h = Haut(tb); // j'appelle la fonction qui pemet de calculer la taille de la table
   printf("Le nombre des enregistrements est %d", h);
 
}
Le problème du programme c'est qu'il me returne toujours 1 à l'exécution. J'arrive pas à comprendre.

Vos contributions sont les bienvenues. Merci.