[C] Fonction prenant en paramétre un tableau

Résolu
pascal$$ Messages postés 39 Statut Membre -  
pascal$$ Messages postés 39 Statut Membre -
Bonjour,débutant en C, je voudrais creer une fonction mafonction prenant en paramétre un tableau de floats et qui en réalise l affichage, partant du principe que sizeof(t)/4 représente la taille de t, je propose donc:
#include <stdio.h>
#include <stdlib.h>

void mafonction(float t[]){
int i;
printf("%d\n", ((sizeof (t))/4)); /*pour faire un test*/
for (i=0; i<=(sizeof(t)/4); i++){
printf("%f\n", t[i]);
}
}
int main(){
float ta[]={1.0, 3.0, 6.0, 3.0, 2.0, 9.0};
mafonction(ta);
return EXIT_SUCCESS;
}

a l execution j obtiens:
1
1.000000
3.000000
ou est mon erreur?
pourquoi la fonction sizeof se comporte t elle de cette façon?

3 réponses

  1. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    il ya plus simple
    tu declare ton tableau comme pointeur tu demande a l'utilisateur sa taille puis tu alloue la bonne memoire en fonction de la taille ensuite tu demande a l'utilisateur de le remplir puis dans ta fonction il faut juste rajouter la taille comme parametre
    voici ce que ça donne :

    #include <stdio.h>
    #include <stdlib.h>
    
    void mafonction(float *t, int taille){
    
    int i;
        printf("\nles valeur du tableau sont : \n");
        for (i=0; i<taille; i++)
            printf("%f\n", t[i]);
    }
    
    int main(){
    
    float *ta ;
    int taille,i;
        printf("entre la taille du tableau : \n");
        scanf("%d",&taille);
        ta=(float *) malloc(taille*sizeof(float));
        printf("entre les valeurs du tableau : \n");
            for(i=0;i<taille;i++){
                scanf("%f",&ta[i]);}
        mafonction(ta,taille);
    return EXIT_SUCCESS;
    }
    
    2
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    sizeof est un opérateur qui renvoie la taille dans objet (int, char, float, etc..) mais pas la taille de ton tableau

    la taille de float étant 4 sur ton système le 1 est affiché vu que tu divises par 4
    comme il s'agit d'un tableau initialisé avec un certain nombre d'éléments alors tu n'as qu'à écrire
    #include <stdio.h>
    #include <stdlib.h>
    
    void mafonction(float t[]){
            int i;
            for (i=0; i< 6; i++){
                    printf("%f\n", t[i]);
            }
    }
    int main(){
            float ta[]={1.0, 3.0, 6.0, 3.0, 2.0, 9.0};
            mafonction(ta);
            return EXIT_SUCCESS;
    }
    
    0
  3. pascal$$ Messages postés 39 Statut Membre
     
    Salut,
    j ai essayé ton code et ça marche nickel merci!
    0