13.字符串形式的数字转数值类型

#include <stdio.h>
#include <stdlib.h>
int  main()
{
   char * spt = "    1100100.1111end....";
   printf("将字符串%s转成数值类型:====2int:%d====2long:%ld====2double:%f\n", spt, atoi(spt), atol(spt), atof(spt) );
   /*
     1.int atoi(const char *nptr)
     2.long int atol(const char *nptr)
     3.double atof(const char *nptr)
     注意事项:1.函数会扫描参数 nptr字符串,会跳过前面的空白字符(例如空格,tab缩进)
             2.如果 nptr不能转换成 int 或者 nptr为空字符串,那么将返回 0
             3.该函数要求被转换的字符串是按十进制数理解的
   */
   char *endpt;
   long int l1 = strtol(spt,&endpt,2);
   printf("原字符串为:%s====long:%ld====剩余的:%s\n", spt ,l1 ,endpt );
   /*
     1.long int strtol(const char *nptr,char **endptr,int base);
     2.unsigned long int strtoul(const char *nptr,char **endptr,int base);
     3.double strtod(const char *nptr,char **endptr,int base);
     参数1:指定被扫描的字符串
     参数2:endptr是一个传出参数,函数返回时指向后面未被识别的第一个字符。
         例如 char *pos; 
             strtol("123abc", &pos, 10);
             strtol返回123
             pos指向字符串中的字母a。
         如果字符串开头没有可识别的整数,
         例如char *pos;
         strtol("ABCabc", &pos, 10);
         则strtol返回0,pos指向字符串开头,可以据此判断这种出错的情况,而这是atoi处理不了的
     参数3:不仅可以识别十进制整数,还可以识别其它进制的整数,取决于base参数,
         比如 strtol("0XDEADbeE~~", NULL, 16)
         返回0xdeadbee的值,s
         trtol("0777~~", NULL, 8)返回0777的值。    
   */
 
   return 0;
}

 

posted @ 2021-07-08 16:42  学而不思则罔!  阅读(286)  评论(0)    收藏  举报