永发信息网

atoi和strtol的区别和使用

答案:3  悬赏:70  手机版
解决时间 2021-02-11 19:55
atoi和strtol的区别和使用
最佳答案
1. atoi的返回值无法区分是正常的返回还是错误的返回,如:
int val;
val = atoi("abc"); 与val = atoi("0");
两者返回的val均为0,因此无法区分哪个是正确parse后的值。
2. strtol函数对异常的返回可以设置errno,从而可以发现异常的返回,如:
errno = 0;   
val = strtol(str, &endptr, base);

if ((errno == ERANGE && (val == LONG_MAX || val == LONG_MIN))
|| (errno != 0 && val == 0)) {
perror("strtol");
exit(EXIT_FAILURE);
}
3. strtol函数支持不同进制的转换,而atoi只支持十进制的转换。
函数原型说明:
#include <stdlib.h>
int atoi(const char *nptr);
#include <stdlib.h>
long int
strtol(const char *nptr, char **endptr, int base);
全部回答
1,atoi的返回值无法区分是正常的返回还是错误的返回,如: int val; val = atoi("abc"); 与val = atoi("0"); 两者返回的val均为0,因此无法区分哪个是正确parse后的值。 2,strtol函数对异常的返回可以设置errno,从而可以发现异常的返回,如: errno = 0; val = strtol(str, &endptr, base); if ((errno == ERANGE && (val == LONG_MAX || val == LONG_MIN)) || (errno != 0 && val == 0)) { perror("strtol"); exit(EXIT_FAILURE); } 3,strtol函数支持不同进制的转换,而atoi只支持十进制的转换。 函数原型说明: #include <stdlib.h> int atoi(const char *nptr); #include <stdlib.h> long int strtol(const char *nptr, char **endptr, int base);
语法.数据类型的匹配问题. 和赋值语句l=r的规则一样,调用函数时实参类型也必须和形参兼容.strtol和atoi都是c标准库中的函数,你通过看它们的函数声明就能知道,形参类型都是指向字符串的指针(char*),而你传char,所以编译出错
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
山东道/新城四号路(路口)在什么地方啊,我要
关于工伤保险缴费的说法,错误的是()。A.职工
博雅象棋怎么和朋友联机
乐视2怎么解绑帐号,密码丢失了 ?有没有人知
条参的别名是什么?
梦然干洗店怎么去啊,我要去那办事
通化入口(G11方向)我想知道这个在什么地方
天猫旗舰店的活动规则上说前15分钟下单才有效
同样的ppt 为什么有的电脑打开是重影
洁丰干洗(祺光大街店)地址好找么,我有些事要
景五笔怎么打字
第一道(A的4次方—2A的平方B的2次方+B的4次
天津汤包王清寺店地址在哪,我要去那里办事
大孔雀蛾简介
博山东路是在上海的郊区还是市区?
推荐资讯
11年总决赛的詹姆斯究竟怎么了
我女朋友说很烦,不想谈了
神武狮驼岭,力天宫,龙宫哪个后期好些? 主任务
iphone6 有信号但是为什么上不了网?
卡不是本人的能查余额吗
显卡坏了可以修吗
邂逅,请问这2个字拼音怎么打,它们的意思是
如图为人体内部分生理过程示意图,其中A、B、
斯柯达昕锐脚垫材质用哪种比较好?
for(i=1;i<8;i++) { a=temp<<i; b=temp>>(8-i
菩萨蛮描写了江南的那些美景
乾豪宾馆地址好找么,我有些事要过去,
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?