C fonction retourne array

Discussion dans 'Web, design' créé par Nmy, 24 Septembre 2011.

  1. Offline
    Nmy Touriste
    Bonsoir,


    j'ai écrit un p 'fit code pour mes cours puisque je débute en c....

    Je cherche à retourner un tableau de valeur dans une fonction....

    mais ça pose problème...

    Nmy, 24 Septembre 2011
    #1
  2. Offline
    Jereck Procrastinateur
    Equipe GamerZ.be
    Le C, ça fait longtemps, mais à première vue, tu devrais plutot retourner un pointeur

    int* convert ( int iNumber, int iBase )
    Jereck, 25 Septembre 2011
    #2
  3. Offline
    L@rgo_XIII G33K
    Wouaw ... il y a beaucoup de choses à revoir dans ton code !

    1) L'identation :-(
    2) Retourner un tableau tu pourras pas, donc faut retourner un pointeur vers une zone mémoire
    3) Si tu veux retourner un pointeur vers une zone mémoire que tu alloues DANS ta fonction, tu dois le faire dynamiquement à l'aide d'un MALLOC() sinon ben ... tu vas retourner un pointeur vers une zone mémoire qui correspondra à n'importe quoi.

    4) La déclaration de ton tableau int cResult[sizeof(int)]; c'est un peu merdique car j'ai envie de dire que tu déclares un tableau de 4 int (car en général la taille d'un int c'est 4 bytes même si ça dépends du système sur lequel tu es (d'ou l’intérêt du sizeof())) et à priori je pense pas que c'est vraiment ce que tu veux faire...

    Il est tard, je pourrais corriger ton code, mais essaye de corriger par toi-même puisque ton but est d'apprendre et comme ça moi ce soir je vais me reposer (mais ça on s'en fou).

    Si demain t'as pas trouvé je te ferai une correction
    L@rgo_XIII, 25 Septembre 2011
    #3
  4. Offline
    Jereck Procrastinateur
    Equipe GamerZ.be
    Lio, essaie de mettre de l'indentation sur GamerZ ;)
    Jereck, 25 Septembre 2011
    #4
  5. Offline
    kronoss sujet à droite -->
    Les joie des tableau en c, ça ne me manque pas :-D
    kronoss, 25 Septembre 2011
    #5
  6. Offline
    Darkzetto Elite
    pareil ça ne me manque mais alors vraiment pas :p
    Darkzetto, 25 Septembre 2011
    #6
  7. Offline
    DeflaMental [-_-]
    Need Faire un tableau de pointeur, ou alors un double pointeur :love:

    et un truc qui m'a beaucoup aidé pour pas mélanger les & et *
    [IMG]
    DeflaMental, 25 Septembre 2011
    #7
  8. Offline
    Nmy Touriste
    j'ai corrigé ceci :


    http://pastebin.com/SAg4KRs8


    mais le soucis c'est qu'il me retourne ceci :


    [Switching to process 1565 thread 0x0]
    1051136Program ended with exit code: 0

    au lieu de 01

    j'ai enlever le code pour inverser le tableau....
    Nmy, 25 Septembre 2011
    #8
  9. Offline
    Skarbone I would rather be snowboarding
    Hmm, exit code 0 c'est bon en principe hein :D.

    Par contre, je pige pas ton sizeof(int)*sizeof(int), ca doit marcher sans problemes, mais tu réserves un espace mémoire de "la taille d'un int fois la taille d'un int"... Ca n'a pas beaucoup de sens, même si ca marche..
    Skarbone, 25 Septembre 2011
    #9
  10. Offline
    Nmy Touriste
    je débute....donc connais pas toutes les astuces sinon j'aurais déclarer comme ceci:


    int * cResult = malloc(sizeof(int));



    le soucis le code fonctionne oui....mais pour avoir le résultat complet je dois faire une boucle de cResult pour avoir tout ce qui se trouve dans le tableau....


    sauf que une fonction dois tirs retourner une valeur mais je ne sais pas si elle "peut" retourner une valeur mise dans une boucle

    genre return cResult dans une boucle ?

    autant commencer par bien faire les choses...
    Nmy, 25 Septembre 2011
    #10
  11. Offline
    Skarbone I would rather be snowboarding
    - pour réserver de l'espace pour 4 entiers (par exemple), tu fais malloc(sizeof(int) * 4). Tu réserve la taille d'un entier fois 4, donc pour 4 entier.

    Sinon bah tu dois parcourir le tableau qui a été renvoyé quoi... Donc c'est dans le main que tu le parcours. Le probleme c'est qu'ici tu fous ton tableau dans un bête entier...

    Fous le plutot dans un pointeur d'entier, de cette manière tu pourra le parcourir.

    (j'espère que je dit pas de conneries, mon C est rouillé)
    Skarbone, 25 Septembre 2011
    #11
  12. Offline
    Nmy Touriste
    Nmy, 25 Septembre 2011
    #12
  13. Offline
    L@rgo_XIII G33K
    Juste :)

    Mais avec la balise CODE ça marche pas ?

    Enfin soit, je vois qu'on aide le gaillard, notamment au sujet du malloc :) ça me semble bien !

    Si tu alloues pas la bonne taille, en incrémentant ton pointeur, tu risques de pointer "n'importe ou dans le mémoire" ou en tous les cas dans une zone qui ne t'es pas forcément allouée, d'où certaines erreurs !
    L@rgo_XIII, 25 Septembre 2011
    #13