2010-05-27 4 views

Répondre

4

Il n'y a pas une telle chose comme un type de données de chaîne en C. Mais à votre question, vous pouvez utiliser int atoi (const char * str) et souvenez-vous d'inclure < stdlib.h>

+0

Gardez à l'esprit que atoi est assez nouveau dans le monde C, C90 et C99. Si vous n'avez pas sprintf pour une raison quelconque, il est peu probable que vous fassiez des efforts. –

+1

@ D'Nabre: 'atoi' est _new _ ??? –

1

vous ne pouvez pas lancer un tableau de caractères/const char * en un entier en C, au moins pas d'une manière qui vous donne un résultat entier sensible [1]. La seule exception est si vous l'utilisez pour convertir un seul caractère en entier, ce qui ne fait que l'élargir si vous regardez la représentation des bits.

La seule façon de faire les bonnes fonctions de conversion comme atoi ou sscanf.

[1] Oui, je sais que vous pouvez convertir un pointeur (const char *) en un entier, mais cela convertit la valeur du pointeur et non la valeur des données vers lesquelles il pointe.

+0

Vous vouliez dire sscanf je pense, pas fscanf. – progrmr

+0

Je l'ai fait, merci de le signaler. –

2

C n'a pas de chaînes, mais elle a des tableaux char (que l'on appelle souvent des chaînes), telles que:

char someChars[] = "12345"; 

Vous pouvez convertir (pas le même que le type cast) le contenu du caractère tableau à un entier comme celui-ci:

int result; 
sscanf(someChars, "%d", &result); 

Ou en utilisant atoi:

int result = atoi(someChars); 

coulée de type est comme prendre un bot de Coke et de mettre une étiquette Pepsi sur la bouteille.
La conversion de type est comme verser une bouteille de Coke dans une canette de Pepsi. Peut-être que ça va aller.

Questions connexes