Langage C: convertir char à int

Sportif_C -  
 Sportif_C -
Bonjour,

Je souhaite écrire une fonction qui permet de convertir un tableau de type **char à int[][].
Des pistes?
Merci.

1 réponse

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Bonjour
    Cela dépend du tableau de char. Est-ce un tableau de chaîne ou bien un tableau 2d de char ?
    Dans le premier cas, il suffira de faire une simple soustraction dans l'autre une conversion avec strtol suffira.
    0
    1. Sportif_C
       
      Merci pour ta réponse.
      Les valeurs dans mon 2D char
      sont comme ceci:
      0 2 4
      23 6 1 9 11
      2 1 6
      5 3
      ...
      Ce que je veux faire c'est passer chaque valeur de mon tableau char** en indice pour un autre tableau 2D int (le nombre de colone et d'indice de deux tableau 2D sont différents).
      Merci.
      0
    2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Dernière question importante : les nombres du tableau de char s'affichent avec %d ou %c (dans le printf) ? En gros s'agit-il d'un simple nombre ou du code ascii du caractere ?
      0
    3. Sportif_C
       
      printf("%c",tabChar[][])
      0
    4. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Si c'est un %c, alors ton tableau 2D contient les caractères '0' à '9' maximum. Il ne peut donc pas y avoir de 23 comme vous avez dit. Ou alors ce ne sera pas %c mais %s ou %d.
      Donc supposons que ce soit bien du %c.
      Il suffit de créer un tableau 2D d'int de la même taille et de copier une à une les valeurs en effectuant la correspondance : tabInt[i][j] = tabChar[i][j] - '0';
      0
    5. Sportif_C
       
      Merci pour ta réponse. Si j'ai des valeurs supérieur à 10. Je ne suis pas sûre que tu m'avais compris.
      En fait, j'ai copié les données de mon fichier texte dans le tab 2D char** car le nombre de colone dans le fichier est variable (ligne 1 deux colone, ligne 2 4 colones, etc).
      Pour afficher mon tab char**.Voici l'affichage de mon tab char** utilises ça
       for(i=0; tabChar[i] != NULL; i++)
          {
      
              for(j=0; tabChar[i][j] != '\0'; j++)
              {
      
                  printf("%c",tabChar[i][j]);
              }
              putchar('\n');
      
          }

      Maintenant je vais utiliser les entiers en indice dans un tableau 2D de type int. Comment faire?
      Merci
      0