IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

fonction C tableau


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 45
    Par défaut fonction C tableau
    bonjour

    je voudrais savoir comment on peut faire pour qu'une fonction en C retourne un tableau de reel ???

    j'ai une fonction du genre


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void recup_data_one_date(float output_coor[nbligne][nbcolonne],int date1,int date2,int part_time)

    je voudrais modifier cette fonction , en lui donnant le nbligne et nbcolonne et elle retourne la matrice output_coor donc ma fonction ressemblera à ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void recup_data_one_date(int date1,int date2,int part_time,int nbligne, int nbcolonne)

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Un truc dans ce genre ?
    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
    float *recup_data_one_date(int date1,int date2,int part_time,int nbligne, int nbcolonne)
    {
    float *tbl = malloc(sizeof(float) * nbligne * nbcolonne);
       if(tbl == NULL)
       {
          // erreur d'allocation mémoire
          return NULL;
       }
     
       // initialisation du tableau
    ...
     
       // retourne le tableau alloué
       // ne pas oublier de le liberer avec free() quand on n'en a plus besoin
       return tbl;
    }
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 45
    Par défaut
    merci bcp

    donc je dois utiliser des pointeurs...

  4. #4
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Et pour compléter ram-0000 et Gruik, consulte la FAQ Comment allouer dynamiquement un tableau à 2 dimensions ?

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    • primo une fonction ne retourne pas un tableau.. Au mieux une adresse, une valeur, ou rien.
    • secondo, il suffit de passer une adresse ou un tableau. Si l'allocation se fait dans le corps de la fonction, il faut passer une adresse modifiable (l'adresse d'une adresse). Si l'allocation est déjà faite avant d'appellet, il sufit de passer l'adresse.

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 480
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    • primo une fonction ne retourne pas un tableau.. Au mieux une adresse, une valeur, ou rien.
    Il faut ajouter également : une structure ! Et celle-ci peut contenir un tableau de taille fixe et connue à l'avance. Au point de vue syntaxe, il faut à chaque fois accéder à son unique membre pour se référer à ce tableau, et ce n'est de toutes façons pas un exemple à donner. Par contre, au point de vue manipulation, cela permet de le transmettre en retour de fonction et de le dupliquer avec « = » sans avoir recours à memcpy() ou à une autre fonction.

  7. #7
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    ou encore un type abstrait manipulé uniquement par un pointeur et des fonctions

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Il faut ajouter également : une structure ! Et celle-ci peut contenir un tableau de taille fixe et connue à l'avance. Au point de vue syntaxe, il faut à chaque fois accéder à son unique membre pour se référer à ce tableau, et ce n'est de toutes façons pas un exemple à donner. Par contre, au point de vue manipulation, cela permet de le transmettre en retour de fonction et de le dupliquer avec « = » sans avoir recours à memcpy() ou à une autre fonction.
    une adresse de structure

  9. #9
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    une adresse de structure
    Non, Obsidian parle bien de retourner une structure, ce qui est tout à fait possible même si ce n'est pas souhaitable si la structure est grosse.

  10. #10
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Salut

    plutot un truc dans le genre?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float ** recup_data_one_date(int date1,int date2,int part_time,int nbligne, int nbcolonne);
    Après l'appellant doit savoir qu'il ya tant de lignes et tant de colonnes et il devra se débrouiller pour libérer chaque ligne

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2009
    Messages : 3
    Par défaut
    Une fonction ne retourne jamais un tableau ...

  12. #12
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Copolla Voir le message
    Une fonction ne retourne jamais un tableau ...
    mais une adresse peut référer à un tableau

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 45
    Par défaut
    et donc ??? comment je peux la corriger ???

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fonction et tableau
    Par abdou karim diagne dans le forum C
    Réponses: 5
    Dernier message: 26/03/2007, 02h05
  2. [VBA-E]paramètre fonction et tableau
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/01/2007, 09h56
  3. [Tableaux] fonction et tableau
    Par vacknov dans le forum Langage
    Réponses: 7
    Dernier message: 23/06/2006, 15h47
  4. Fonctions SQL - Tableau et type anyarray
    Par etiennegaloup dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 07/11/2005, 12h25
  5. PB fonction et Tableau
    Par T-B dans le forum Langage
    Réponses: 5
    Dernier message: 23/10/2005, 15h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo