首页 > 编程知识 正文

ln函数详解,c语言sizeof函数详解

时间:2023-05-03 17:55:09 阅读:260095 作者:1835

翻了翻旧代码,发现以前对strtol这个函数不太了解,特此分析一下。

C 库函数strtol原型为:

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

其运行过程为:

    把参数 str 所指向的字符串根据给定的 base 转换为一个长整数(类型为 long int 型),并将该长整数转换为十进制数返回,如果没有符合的结果,则返回一个0值;

    base 必须介于 2 和 36(包含)之间,或者是特殊值 0;

    str中不符合base的部分存储于*endptr中。

----------------------------------------------------------------------------------------------------------------------------------------

 我们来看一下实例:

#include <iostream>using namespace std;int main() { char buffer[20]="112233abc11"; char *endptr; cout << "初始字符串为:" << buffer << "n" << endl; long result = strtol(buffer, &endptr, 2); cout << "符合的结果并转换为十进制数result: "<< result << "t, 余下的字符串endptr: " << endptr << endl; return 0;}

输出结果为:

初始字符串为:112233abc11

符合的结果并转换为十进制数result: 3     , 余下的字符串endptr: 2233abc11

即符合base为2条件的只有0和1,所以通过函数我们得到11,函数将11转为十进制数得到3返回给result,余下的字符串存储到endptr中,其它情况依此类推。

base的筛选条件(抄录自zxx2096的博客:strtol()详解):

当base为2时,合法字符为‘0’,‘1’;

base为8时,合法字符为‘0’,‘1’,……‘7’;

base为10时,合法字符为‘0’,‘1’,……‘9’;

base 为16时,合法字符为‘0’,‘1’,……‘9’,‘a’,……‘f’;

base为24时,合法字符为‘0’,……‘9’,‘a’,……‘n’,

base为36时,合法字符为‘0’,……‘9’,‘a’,……‘z’;等等。

其中,不区分大小写,比如,‘A’和‘a’会都会被转化为10。

到此,应该对该函数的使用较为清晰了吧。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。