atoi de chaîne de caractères en Entier à l'aide de pointeur de char
Voici le code que j'ai écrit qui divise une chaîne en c et je veux retourner le premier entier de la valeur pointée par le pointeur de char.
#include<stdio.h>
void main(){
int month[12]={0};
char buf[]="1853 was the year";
char *ptr;
ptr = strtok(buf," ");
printf("%s\n",ptr);
int value = atoi(*ptr);
printf("%s",value);
}
EDIT:Il me donne une erreur de segmentation.
Le problème est qu'il est l'impression de 1853 de l'année, Mais je veux le convertir en un format de nombre entier.Comment puis-je récupérer cette valeur comme un nombre entier à l'aide du pointeur?
Remarque: strtonum est un "coffre-robuste" version de atoi/atol
Remarque:
Remarque:
main()
retourne int
, et prend (void)
ou (int, char **)
.OriginalL'auteur Abhishek | 2012-01-29
Vous devez vous connecter pour publier un commentaire.
vous êtes ici essayer d'utiliser un nombre entier comme une chaîne de caractères:
que vous devriez faire
Edit: oui, et aussi ne int valeur = atoi(ptr); l'ajout d'une autre réponse.
principal devrait également être de type int, pas la nullité.
Aussi, quel compilateur que vous utilisez? Avec gcc 4.6 j'ai eu ces erreurs et d'avertissements lorsque vous essayez de compiler votre code (après l'ajout de certains inclut):
J'avais pense que vous pourriez obtenir au moins une partie de la plupart des compilateurs.
OriginalL'auteur Johan Lundberg
Pas besoin de déréférencement,
atoi()
s'attend à unconst char*
, pas unchar
.Et vous imprimez un entier en utilisant
%d
ou%i
.%s
est pour la chaîne.BTW, peut-être que vous souhaitez utiliser
strtol
au lieuOriginalL'auteur kennytm
Utilisation:
atoi
devriez obtenir un pointeur de caractère, qui est ce queptr
est.*ptr
est le premier personnage - 1 dans ce cas, et de toute façon n'est pas un pointeur, il est donc inutilisable pouratoi
.OriginalL'auteur ugoren