[C] Fonction prenant en paramétre un tableau

Résolu/Fermé
pascal$$ Messages postés 39 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 26 février 2009 - 23 nov. 2007 à 18:56
pascal$$ Messages postés 39 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 26 février 2009 - 24 nov. 2007 à 14:58
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?
A voir également:

3 réponses

mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
23 nov. 2007 à 19:51
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
23 nov. 2007 à 19:51
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
pascal$$ Messages postés 39 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 26 février 2009
24 nov. 2007 à 14:58
Salut,
j ai essayé ton code et ça marche nickel merci!
0