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; }