8
votes

Utiliser Atoi avec char

Y a-t-il un moyen de convertir un caractère en une chaîne en C?

J'essaie de le faire comme ceci: P>

   char *array;

   array[0] = '1';

   int x = atoi(array);

   printf("%d",x);


0 commentaires

6 Réponses :


5
votes

Vous devez attribuer la mémoire à la chaîne, puis terminer NULL. XXX PRE>

ou, plus facile: P>

char array[10];

array = "1";

int x = atoi(array);

printf("%d",x);


0 commentaires

7
votes

Si vous essayez de convertir un caractère numérique en int, utilisez simplement des caractères arithmétiques pour soustraire le code ASCII:

int x = myChar - '0';
printf("%d\n", x);


0 commentaires

30
votes
char c = '1';
int x = c - '0';
printf("%d",x);

1 commentaires

Réponse la plus simple sans avoir à utiliser des tampons intermédiaires



2
votes

Vous pouvez convertir un caractère en une chaîne via ce qui suit: xxx

se terminent par un caractère NUL, qui a la valeur 0.


0 commentaires

4
votes

Que diriez-vous:

   char arr[] = "X";
   int x;
   arr[0] = '9';
   x = atoi(arr);
   printf("%d",x);


1 commentaires

C'est plutôt excessif pour un seul char. Des variables supplémentaires, des tableaux, des terminateurs nuls sont tous inutiles.



0
votes

Une déclaration de la fonction ATOI est (elle attend une "chaîne"): xxx

Si vous allez l'utiliser avec un seul caractère, vous obtiendrez une segmentation Défaut , car la fonction essaie de lire la mémoire jusqu'à ce qu'il trouve le '\ 0' !

e. g. Essayez ceci: xxx


0 commentaires