GNU/Linux >> Tutoriels Linux >  >> Linux

Où est la fonction itoa sous Linux ?

EDIT :Désolé, j'aurais dû me rappeler que cette machine est décidément non standard, ayant branché divers libc non standard implémentations à des fins académiques;-)

Comme itoa() est en effet non standard, comme mentionné par plusieurs commentateurs utiles, il est préférable d'utiliser sprintf(target_string,"%d",source_int) ou (mieux encore, car il est à l'abri des débordements de tampon) snprintf(target_string, size_of_target_string_in_bytes, "%d", source_int) . Je sais que ce n'est pas aussi concis ou cool que itoa() , mais au moins vous pouvez Write Once, Run Everywhere (tm);-)

Voici l'ancienne réponse (modifiée)

Vous avez raison de dire que la valeur par défaut gcc libc n'inclut pas itoa() , comme plusieurs autres plates-formes, car il ne fait techniquement pas partie de la norme. Voir ici pour un peu plus d'infos. Notez que vous devez

#include <stdlib.h>

Bien sûr, vous le savez déjà, car vous vouliez utiliser itoa() sous Linux après l'avoir vraisemblablement utilisé sur une autre plate-forme, mais... le code (volé du lien ci-dessus) ressemblerait à :

Exemple

/* itoa example */
#include <stdio.h>
#include <stdlib.h>

int main ()
{
  int i;
  char buffer [33];
  printf ("Enter a number: ");
  scanf ("%d",&i);
  itoa (i,buffer,10);
  printf ("decimal: %s\n",buffer);
  itoa (i,buffer,16);
  printf ("hexadecimal: %s\n",buffer);
  itoa (i,buffer,2);
  printf ("binary: %s\n",buffer);
  return 0;
}

Sortie :

Enter a number: 1750
decimal: 1750
hexadecimal: 6d6
binary: 11011010110

J'espère que cela vous aidera !


itoa n'est pas une fonction C standard. Vous pouvez implémenter le vôtre. Il est apparu dans la première édition de Kernighan et Ritchie's Le langage de programmation C , à la page 60. La deuxième édition du langage de programmation C ("K&R2") contient l'implémentation suivante de itoa , à la page 64. Le livre note plusieurs problèmes avec cette implémentation, notamment le fait qu'elle ne gère pas correctement le nombre le plus négatif

 /* itoa:  convert n to characters in s */
 void itoa(int n, char s[])
 {
     int i, sign;

     if ((sign = n) < 0)  /* record sign */
         n = -n;          /* make n positive */
     i = 0;
     do {       /* generate digits in reverse order */
         s[i++] = n % 10 + '0';   /* get next digit */
     } while ((n /= 10) > 0);     /* delete it */
     if (sign < 0)
         s[i++] = '-';
     s[i] = '\0';
     reverse(s);
}  

La fonction reverse utilisé ci-dessus est implémenté deux pages plus tôt :

 #include <string.h>

 /* reverse:  reverse string s in place */
 void reverse(char s[])
 {
     int i, j;
     char c;

     for (i = 0, j = strlen(s)-1; i<j; i++, j--) {
         c = s[i];
         s[i] = s[j];
         s[j] = c;
     }
}  

Linux
  1. La commande locate sous Linux

  2. Où se trouve le fichier d'en-tête <conio.h> sous Linux ? Pourquoi ne puis-je pas trouver <conio.h> ?

  3. Où est défini ssize_t sous Linux ?

  4. Où est la page de manuel de la fonction C `sizeof` ?

  5. Où se trouve le système de fichiers du sous-système Linux dans Windows 10 ?

Qu'est-ce que le Shell sous Linux ?

Où sont les données de configuration stockées dans Linux

La commande timer sous Linux

Linux - Où la chaîne d'environnement est-elle réellement stockée ?

Où puis-je trouver la première version du système d'exploitation Linux ?

Où se trouve le fichier php.ini sur un PC Linux/CentOS ?