[ C ] Tableau ( simple )

Bonsoir,

J'ai un tableau de type long et j'aimerai pouvoir compter ces cellulles, le hic c'est que strlen n'est pas approprier étant donner qu'il n'est pas de type char.

Merci
Configuration: Windows XP
Firefox 3.0.7

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. tu veux compter les cellules remplies? parceque a la base tu es censé savoir combien il y en a vu que tu le déclare
    1. oui elle sont initialiser a 0 :

      long tableau[6] = {0};

      Mais c'est pour ma function j'en ai besoin :

      void lecture_tableau(long tableau[]){
      long i;
      for(i = 0; i < strlen(tableau); i++){
      printf("%ld | ", tableau[i]);
      }
      }

      Thx
      1. void lecture_tableau(long tableau[])
        {
        int i=0; // pas besoin de long pour un compteur
        while((tableau[i]!=0)&&(i<6))
        {
        i++;
        printf("%ld | ", tableau[i]);
        }
        }
        1. Contributeur
          Salut,
          L'incrémentation de la variable i est mal placée : la première case ne sera pas affichée et il y aura un segfault lors de la dernière itération.
      2. Contributeur
        Salut,

        Tu connais la taille du tableau lors de sa déclaration. Mais si tu veux la recalculer, tu peux utiliser l'opérateur sizeof.

        long tableau[6] = {0};
        size_t taille=sizeof tableau/sizeof *tableau;
        

        Ou alors, tu peux faire tout simplement :
        #define MAX 6
        long tableau[MAX]={0};
        //MAX contient la taille du tableau
        


        Sinon, je corrige ta fonction d'affichage :

        void lecture_tableau(long tableau[], const int taille){ //tu dois faire passer la taille en argument ou alors tu peux utiliser la constante MAX définie avec #define comme expliqué ci-dessous.
        long i;
        for(i = 0; i < taille; i++){  //for(i=0;i<taille && tableau[i];i++) si tu ne souhaites pas afficher les éléments nuls.
        printf("%ld | ", tableau[i]);
        }
        } 
        

        Cdlt
        1. Contributeur
          Salut.
          quelque lacune avec sizeof.
          Tu ne pourrai pas l'utiliser dans le corps de la fonction pour connaître la taille du tableau ?
          1. Contributeur
            Tu ne pourrai pas l'utiliser dans le corps de la fonction pour connaître la taille du tableau ?
            Non. En C, on n'envoie pas le tableau en argument de fonctions mais un pointeur sur la première case du tableau.
            Par conséquent, le sizeof te retournera la taille du pointeur, et non du tableau.
            Cdlt