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 qui renvois un tableau a ranger dans un autre tableau


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 5
    Par défaut fonction qui renvois un tableau a ranger dans un autre tableau
    Bonjour,
    Je vous ecris car j'ai un autre soucis que je n'arrive pas a resoudre.

    J'ai une fonction qui me renvois un tableau[10] de nombre et j'aimerais ranger ce tableau dans un second tableau.
    voici ma fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    int humancreercode(int nombrealeatoire)
    {
    int i =0;
    int nombre[10] = {0};
     
    printf ( "Veillez tapper %d des chiffre de 1 a 10 separeŽ par un espace\n",nombrealeatoire);
    for (i=0 ; i<nombrealeatoire; i++)
    scanf ("%d",&nombre[i]);
     
    printf("La solution contient %d caracteres\n",nombrealeatoire);
     
    return nombre;
    }
    j'ai essailler de ranger ce tableau dans un pointeur mais malheureusement je n'obtient que le premier resultat du tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     int *tab = NULL;
    tab = humancreercode(nombrealeatoire);
        for (i=0 ; i<nombrealeatoire; i++)
        {
        printf("%ld\n",*tab);
        }
    Auriez vous une idée de la façon dont je devrais m'y prendre pour pouvoir recuperer tout le contenu du tableau et pour le ranger dans un second tableau

    merci encore
    Encore merci

  2. #2
    Membre Expert Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Par défaut
    Tu n'obtiens que la première valeur du tableau parce que, à chaque itération, tu affiches *tab et non pas tab[i].

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for (i=0;i<nombrealeatoire;i++)
    {
        printf("%ld\n",*tab);
    }
    Mais au delà de ce détail, le gros problème de ton code est que ta fonction retourne un tableau LOCAL à la fonction, qui n'existe plus quand tu en sors. Si tu veux effectivement retourner un tableau, il faut que tu l'alloues dans la fonction :

    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
     
    int humancreercode(int nombrealeatoire)
    {
        int i;
        int *nombre;
     
        nombre = malloc(nombrealeatoire*sizeof(int));
        printf ( "Veillez tapper %d des chiffre de 1 a 10 separeŽ par un espace\n",nombrealeatoire);
        for (i=0 ; i<nombrealeatoire; i++)
            scanf ("%d",nombre+i);
     
        printf("La solution contient %d caracteres\n",nombrealeatoire);
     
        return nombre;
    }
    Là, "par chance", ton code marche quand même parce que tu utilises immédiatement la valeur retournée (et donc la zone mémoire correspondante est encore intacte et non réutilisée) mais c'est foncièrement faux.

  3. #3
    Membre Expert Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Par défaut
    "petit" correctif

    du coup, ta fonction ne retourne pas un int mais un int * :

    int *humancreercode(int nombrealeatoire)

Discussions similaires

  1. fonction qui renvoie un tableau
    Par GLSpirit dans le forum C++
    Réponses: 9
    Dernier message: 12/05/2007, 14h05
  2. fonction qui renvoie un tableau
    Par toto2022 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 22/01/2007, 16h11
  3. Comment faire une fonction qui renvoi un tableau.
    Par poly128 dans le forum Delphi
    Réponses: 2
    Dernier message: 01/06/2006, 01h04
  4. Fonction qui renvoie un tableau?
    Par elm dans le forum C
    Réponses: 23
    Dernier message: 21/12/2005, 12h44
  5. Fonction qui renvoie erreur dans mon état
    Par Daniel MOREAU dans le forum Access
    Réponses: 1
    Dernier message: 20/10/2005, 12h40

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