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 :

Probleme return *tab


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 35
    Par défaut Probleme return *tab
    Bonjour, j'ai un problème pour retourner un tableau d'une fonction a une autre.

    En effet, elle retourne seulement tab[0] mais pas tout mon tableau.

    Voici mon code.

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    void Encrypte (int **tabref, char *mot, int taille)
    {
        int *tabcomptcodes;
        int *motcode;
        int i,j;
        int tabcompt[26];
        //int compteur=0;
     
        //On initialise tabcompt a 0
        for(i=0;i<26;i++)
        {
            tabcompt[i]=0;
        }
        //Fin init
     
        //Allou un tableau qui recevra celui retourné par la fonction
        tabcomptcodes=(int*)malloc(26*sizeof(int));
     
        //Appel de la fonction et affectation de son resultat dans un tableau
        *tabcomptcodes=comptcodes(&tabref[0]);
     
        //tableau d'int destiné a recevoir le code correspondant au mot
        motcode=(int*)malloc(taille*sizeof(int));
     
        //Algorythme de cryptage
        for(i=0;i<taille;i++)
        {
            motcode[i]=mot[i];
            motcode[i]=motcode[i]+256; //On incrémente de 256 car aucun code ascii n'est supérieur a 256
            for(j=0;j<26;j++)
            {
                if(mot[i]==tabref[j][0])//Mais si le code est repertorié dans la colone 0 de tabref on affecte le code correspondant
                {
                    tabcompt[j]++;
                    motcode[i]=tabref[j][tabcompt[j]];
     
                    if(tabcompt[j]>=tabcomptcodes[j])
                    {
                        tabcompt[j]=0;
                    }
     
                    break;
                }
     
            }
        }
        for(i=0;i<26;i++)
        printf("\n%d", tabcomptcodes[i]);
        //Fin algorythme de cryptage
     
        printf("\n\n");
        printf("\t\tLe mot code est : ");
        for(i=0; i<taille-1; i++)
        {
            printf("|%d|", motcode[i]);
        }
     
     
    free(motcode);
    free(tabcomptcodes);
    }
     
    //Fonction qui compte le nombre de codes par characteres.
    int comptcodes(int **tabref)
    {
        int tabcomptcodes[26];
        int i,j;
        int compteur=0;
     
                //Cet algorythme va compter le nombre de codes par lettres
        for(i=0; i<26; i++)
        {
     
            for(j=1; j<5; j++)
            {
                if(tabref[i][j]!=0)
                {
                    compteur++;
                }
            }
            tabcomptcodes[i]=compteur;
            compteur=0;
        }//fin algo
     
        return *tabcomptcodes;
        //free(tabcomptcodes);
    }

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Salut

    C'est illisible. Poste avec les balises CODE (crochets et non < > ). Il y a un bouton de prévisualisation qui permet de voir le message avant de le poster.

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Une fonction ne peut pas retourner quelque chose qui est alloué sur la stack (comme ton tabcomptcodes[26]). La stack est perdue quand on sort de la fonction.

    Alloue dynamiquement (malloc) tabcomptcodes dans comptcodes(), au lieu de le faire dans Encrypte().

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 35
    Par défaut
    Merci beaucoup, en effet cela marche comme sa.
    Cependant si j'ai besoin de retourner deux tableau il faut retourner un tableau de tableau.

    J'aurais besoin de le faire pour optimiser mon, programme.

    J'essai mais n'y arrives pas donc si quelqu'un peut me donner la syntaxe d'une fonction bidon retournant un tableau de tableau ce serait génial.

    Merci et,
    Bonne fêtes aux développeurs.

Discussions similaires

  1. Réponses: 6
    Dernier message: 20/04/2010, 11h09
  2. probleme return ResultSet
    Par wagui26 dans le forum Débuter avec Java
    Réponses: 11
    Dernier message: 15/01/2009, 09h56
  3. Problème avec Tabbing : retrait vers la gauche
    Par AppleGuy dans le forum Mise en forme
    Réponses: 3
    Dernier message: 02/08/2007, 14h02
  4. probleme return confirm avec firefox
    Par druglord dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 24/08/2005, 10h14
  5. probleme simple de tab[][]
    Par vince3320 dans le forum C
    Réponses: 8
    Dernier message: 17/05/2004, 17h48

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