Partage
  • Partager sur Facebook
  • Partager sur Twitter

Remplir mon tableau avec un pointeur

    12 octobre 2019 à 22:34:28

    Salut tout le monde, je suis débutant en C et je n'arrive pas à remplir mon tableau (l.36) avec un pointeur :

    #include <stdio.h>
    #include <stdlib.h>
    
    char* inttohex(int nb);
    char* nbtohex(int nb);
    
    int main(int argc, const char * argv[])
    {
        printf("%c\n", *nbtohex(31));
        
        return 0;
    }
    
    
    char* nbtohex(int nb)
    {
        int taille_resultat = 1;
        
        int var = nb;
        
        while (var > 15)
        {
            var /= 16;
            taille_resultat++;
        }
        
        char* texte = NULL;
        texte = malloc(sizeof(char) * taille_resultat);
        
        int r;
        while (taille_resultat > 0) {
            r = nb % 16;
            
            nb /= 16;
            
            texte[taille_resultat] = *inttohex(r);
            
            taille_resultat--;
        }
        texte[0] = nb;
        
        return texte;
    }
    
    
    char* inttohex(int nb)
    {
        char* output = NULL;
        
        if(nb < 16)
        {
            output = malloc(sizeof(char));
            switch (nb) {
                case 10:
                    *output = 'A';
                    break;
                case 11:
                    *output = 'B';
                    break;
                case 12:
                    *output = 'C';
                    break;
                case 13:
                    *output = 'D';
                    break;
                case 14:
                    *output = 'E';
                    break;
                case 15:
                    *output = 'F';
                    break;
                default:
                    sprintf(output, "%d", nb);
                    break;
            }
            free(output);
        }
        else
        {
            printf("Variable supérieure à F\n");
        }
        
        return output;
    }

    Le programme ne renvoie pas d'erreur. Est-ce que quelqu'un aurait la solution svp ? C'est sûrement super évident, je code en C seulement depuis quelques semaines.

    -
    Edité par Autechre 12 octobre 2019 à 22:50:28

    • Partager sur Facebook
    • Partager sur Twitter
      13 octobre 2019 à 0:14:08

      Je n'ai pas regardé le code en détail, mais il y a deux chose qui me saute aux yeux.

      Dans ta fonction inttohex tu fais une allocation sur le pointeur output, pointeur que la fonction retourne, mais avant cela tu libères la mémoire, donc le pointeur pointe sur une zone non valide.

      Ensuite dans la fonction nbtohex tu fais une allocation d'un tableau de taille taille_resultat et un peut plus loin tu accèdes à la case d'indice taille_resultat or le indice des tableaux vont de 0 à N-1. soit pour ton tableau de 0 à taille_resultat-1.

      EDIT :

      Aussi, tu essais d'afficher une chaîne de caractère dans ta fonction main avec le spécificateur de format %c !

      Au fait, c'est ça que tu essais de faire :

      #include <stdio.h>
      
      int main(void)
      {
          printf("%X\n", 31);
      
          return 0;
      }



      -
      Edité par rouloude 13 octobre 2019 à 0:19:27

      • Partager sur Facebook
      • Partager sur Twitter

      Remplir mon tableau avec un pointeur

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown