[ C ] Tableau ( simple )

lirycs78 Messages postés 101 Date d'inscription   Statut Membre -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. vautour88
     
    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
    0
  2. lirycs78 Messages postés 101 Date d'inscription   Statut Membre 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
    0
  3. vautour88
     
    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]);
    }
    }
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      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.
      0
  4. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    Salut.
    quelque lacune avec sizeof.
    Tu ne pourrai pas l'utiliser dans le corps de la fonction pour connaître la taille du tableau ?
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      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
      0