fonction C qui retourne un tableau et un int
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

fonction C qui retourne un tableau et un int



  1. #1
    mril232

    fonction C qui retourne un tableau et un int


    ------

    Bonjour,
    j'ai une fonction C void pour l'instant qui affiche un tableau depuis un registre, je veux que ma fonction me retourne le tableau affiché et stocké dans une " char ans[300]" avec la dimension finale de mon tableau, des idées ?
    Code:
    void read_data(void){
    char ans[300]={0};
    int count=0, j=1000000;
    while (j){
             ans[count]=lire_registre();
             count++;
             j--;
    }
    for (j=0;j<count;j++)
    {
            printf("%c",ans[j]);
    }
    en gros ma fonction ressemble à ça ! du coup je veux retourner count(nouvelle taille du tableau), et mon tableau.
    Merci à vous.
    A

    -----
    "le diable se cache dans les détails"

  2. #2
    albanxiii
    Modérateur

    Re : fonction C qui retourne un tableau et un int

    Bonjour,

    Passage par adresse :

    Code:
    void read_data( char **ans, int *count );
    @+
    Not only is it not right, it's not even wrong!

  3. #3
    mril232

    Re : fonction C qui retourne un tableau et un int

    Citation Envoyé par albanxiii Voir le message
    Bonjour,

    Passage par adresse :

    Code:
    void read_data( char **ans, int *count );
    @+
    oui j'en ai vu ça quelques part mais je l'ai pas compris. comment est ce que je peux utiliser le tab par exemple dans une autre fonction?
    par exemple je veux vérifier la présence d'une chaine de caractère, par exemple: check_answer(char * tab, char* message)
    merci
    "le diable se cache dans les détails"

  4. #4
    Jack
    Modérateur

    Re : fonction C qui retourne un tableau et un int

    En l'état, ça ne peut pas fonctionner avec un tableau "statique" déclaré localement dans la fonction. Il faudra donc que le tableau soit:
    - déclaré soit déjà défini au moment de l'appel
    - déclaré dynamiquement dans la fonction

    Dans les 2 cas, on passera effectivement un pointeur sur ce tableau et un autre sur la variable contenant sa taille effective.

  5. A voir en vidéo sur Futura
  6. #5
    polo974

    Re : fonction C qui retourne un tableau et un int

    Code:
    void read_data(void)
    { 
         char ans[300]={0}; 
         ...
    }
    Attention, quand tu sors de ta fonction read_data, le tableau ans[300] risque d'être écrasé à tout moment...
    En général, pas tout de suite, mais seulement bien plus tard, et que tu ne comprends plus alors pourquoi tes data disparaissent alors qu'avant "ça marchait"...

    d'où le "Il faudra donc que ..." de Jack.

    bien se rappeler qu'en C, une fonction ne peut rendre qu'une seule variable simple, donc si on veut retourner un tableau, il faut gérer à la main son allocation et plus tard si besoin sa libération (voir malloc() et free()).
    et pour les retours multiples, il faut passer des pointeurs où la fonction rangera les infos utiles à rendre (ou un pointeur sur une structure).
    Jusqu'ici tout va bien...

  7. #6
    mril232

    Re : fonction C qui retourne un tableau et un int

    Ah d'accord du coup le truc que je comprends pas, pourquoi mettre le tableau et l'entier en arguments de ma function, alors qu'il seront en sortie, si par exemple je met une structure pour récupérer mes variables, je pense que j'en aurais pas besoin.
    Code:
    typedef struc {
       char *tab;
       int size;
    }resultat;
    void read_data(void)
    resultat resu;
    while (j){
             tab[resu->size]=lire_registre();
             size++;
             j--;
    }
    for (j=0;j<resu->size;j++)
    {
            printf("%c",tab[j]);
    }
    return resu;
    }
    (c'est moche ce que j'ai écrit mais c'est un peu l'idée, enfin j'espère )
    "le diable se cache dans les détails"

  8. #7
    Jack
    Modérateur

    Re : fonction C qui retourne un tableau et un int

    C'est très moche, mais surtout très faux:
    - la variable tab n'existe pas dans la fonction, vu que c'est un champ de la variable resu
    - tab[resu->size] pourquoi la flèche -> ? vu que resu n'est pas un pointeur? De plus pour un tableau tab de n éléments, tab[n] n'existe pas
    - pour finir, tu n'as toujours pas compris ce que polo974 et moi essayons de te faire comprendre: une variable déclarée localement dans une fonction possède la durée de vie de la fonction. Les données de resu, et par conséquent tab, ne sont plus accessibles dès que la fonction read_data est terminée.

  9. #8
    shakone

    Re : fonction C qui retourne un tableau et un int

    On pourrait également imaginer que la fonction retourne la taille du tableau, plutôt que dans le paramètre d'appel de la fonction. Même si le but ici est de comprendre le rôle des pointeurs apparement
    pingouin dans les champs, hiver méchant.

Discussions similaires

  1. Fonction tableau en c++
    Par usersciences dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 25/11/2015, 17h47
  2. Réponses: 1
    Dernier message: 21/11/2011, 08h24
  3. langage C: appel fonction retourne matrice
    Par invite8b421ec7 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 15/03/2011, 08h09
  4. Fonction et tableau en C
    Par invite64bb1f45 dans le forum Électronique
    Réponses: 3
    Dernier message: 20/10/2009, 15h04
  5. fonction qui retourne la valeur pour laquelle elle vaut 0
    Par invitea255964f dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 16/06/2009, 07h11