strtol 函数

long int strtol(const char *nptr, char **endptr, int base);


strtol是atoi的增强版,参数base范围从2至36,或0。参数base代表采用的进制方式,0/10是十进制

1. endptr是一个传出参数,函数返回时指向后面未被识别的第一个字符。例如char *pos; strtol("123abc", &pos, 10);
strtol返回123,pos指向字符串中的字母a。
2. 如果字符串开头没有可识别的整数,例如char *pos; strtol("ABCabc", &pos, 10);
则strtol返回0,pos指向字符串开头,可以据此判断这种出错的情况,而这是atoi处理不了的

/* strtol example */

#include <stdio.h>      /* printf */

#include <stdlib.h>     /* strtol */



int main ()

{

	char szNumbers[] = "2001 60c0c0 -1101110100110100100000 0x6fffff";

	char * pEnd;

	long int li1, li2, li3, li4;

	li1 = strtol (szNumbers,&pEnd,10);

	li2 = strtol (pEnd,&pEnd,16);

	li3 = strtol (pEnd,&pEnd,2);

	li4 = strtol (pEnd,NULL,0);

	printf ("The decimal equivalents are: %ld, %ld, %ld and %ld.\n", li1, li2, li3, li4);

	return 0;

}



Output:

The decimal equivalents are: 2001, 6340800, -3624224 and 7340031

你可能感兴趣的:(函数)