char* 类型到int long型的转换

时间:2022-01-19 13:00:27
我的char* 类型变量是个数字 我怎么把它转成数字型啊? 用强制转换出来的不是我原来的数字

4 个解决方案

#1


查一下ASCII码,找到从字符"0"转换到数字"0"的定值就可以的了.
             假如char *p="0";要转换成数字"0"就是*(int *)p-48;

#2


atol();
strtol();


char*强制转换得到的是一个内存地址

#3


#include <stdlib.h>
#include <stdio.h>

void main( void )
{
   char *s; double x; int i; long l;

   s = "  -2309.12E-15";    /* Test of atof */
   x = atof( s );
   printf( "atof test: ASCII string: %s\tfloat:  %e\n", s, x );

   s = "7.8912654773d210";  /* Test of atof */
   x = atof( s );
   printf( "atof test: ASCII string: %s\tfloat:  %e\n", s, x );

   s = "  -9885 pigs";      /* Test of atoi */
   i = atoi( s );
   printf( "atoi test: ASCII string: %s\t\tinteger: %d\n", s, i );

   s = "98854 dollars";     /* Test of atol */
   l = atol( s );
   printf( "atol test: ASCII string: %s\t\tlong: %ld\n", s, l );
}

#4


使用下列 库函数即可(stdlib.h 中):

double atof(char *nptr) 将字符串nptr转换成双精度数,并返回这个数,错误返回0
int    atoi(char *nptr) 将字符串nptr转换成整型数,  并返回这个数,错误返回0
long   atol(char *nptr) 将字符串nptr转换成长整型数,并返回这个数,错误返回0
double strtod(char *str,char **endptr)将字符串str转换成双精度数,并返回这个数,
long   strtol(char *str,char **endptr,int base)将字符串str转换成长整型数,并返回这个数,

#1


查一下ASCII码,找到从字符"0"转换到数字"0"的定值就可以的了.
             假如char *p="0";要转换成数字"0"就是*(int *)p-48;

#2


atol();
strtol();


char*强制转换得到的是一个内存地址

#3


#include <stdlib.h>
#include <stdio.h>

void main( void )
{
   char *s; double x; int i; long l;

   s = "  -2309.12E-15";    /* Test of atof */
   x = atof( s );
   printf( "atof test: ASCII string: %s\tfloat:  %e\n", s, x );

   s = "7.8912654773d210";  /* Test of atof */
   x = atof( s );
   printf( "atof test: ASCII string: %s\tfloat:  %e\n", s, x );

   s = "  -9885 pigs";      /* Test of atoi */
   i = atoi( s );
   printf( "atoi test: ASCII string: %s\t\tinteger: %d\n", s, i );

   s = "98854 dollars";     /* Test of atol */
   l = atol( s );
   printf( "atol test: ASCII string: %s\t\tlong: %ld\n", s, l );
}

#4


使用下列 库函数即可(stdlib.h 中):

double atof(char *nptr) 将字符串nptr转换成双精度数,并返回这个数,错误返回0
int    atoi(char *nptr) 将字符串nptr转换成整型数,  并返回这个数,错误返回0
long   atol(char *nptr) 将字符串nptr转换成长整型数,并返回这个数,错误返回0
double strtod(char *str,char **endptr)将字符串str转换成双精度数,并返回这个数,
long   strtol(char *str,char **endptr,int base)将字符串str转换成长整型数,并返回这个数,