最近在使用strtoul时,碰到了一个让我没有想到的问题。
费了很大的功夫,最后才发现是这个小小的errno的问题。
吃一堑,长一智,特此写出来和大家分享一下。
废话不多说,下面开始干货。
strtoul (将字符串转化成无符号长整型)
表头文件
#include<stdlib.h>
定义函数
unsigned long strtoul(const char *nptr,char **endptr,int base);
主要功能
strtoul()会将参数nptr字符串根据参数base来转换成无符号的长整型数。参数base范围从2至36,或0。参数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制数等。
返回值
返回转换后的长整型数,否则返回ERANGE并将错误代码存入errno中。
附加说明
ERANGE指定的转换字符串超出合法范围。
所以一般使用strtoul时,为了判断字符串是否转换成功,会根据errn