linux c atoi strtol 区别
atoi和strtol函数均是把字符串转换成整数,两者的不同点主要是:
1,atoi的返回值无法区分是正常的返回还是错误的返回,如:
int val;
val = atoi("abc"); 与val = atoi("0");
两者返回的val均为0,因此无法区分哪个是正确parse后的值。
2,strtol函数对异常的返回可以设置errno,从而可以发现异常的返回,如:
errno = 0;/* To distinguish success/failure after call */
val = strtol(str, &endptr, base);/* Check for various possible errors */
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);
4,下面给出linux man strtol 的 demo 代码:
#include <stdlib.h>
#include <limits.h>
#include <stdio.h>
#include <errno.h>int main(int argc, char *argv[])
{int base;char *endptr, *str;long val;if (argc < 2){fprintf(stderr, "Usage: %s str [base]/n", argv[0]);exit(EXIT_FAILURE);}str = argv[1];base = (argc > 2) ? atoi(argv[2]) : 10;/* To distinguish success/failure after call */errno = 0;val = strtol(str, &endptr, base);/* Check for various possible errors */if ((errno == ERANGE && (val == LONG_MAX || val == LONG_MIN)) || (errno != 0 && val == 0)){perror("strtol");exit(EXIT_FAILURE);}if (endptr == str){fprintf(stderr, "No digits were found/n");exit(EXIT_FAILURE);}/* If we got here, strtol() successfully parsed a number */printf("strtol() returned %ld/n", val);/* Not necessarily an error... */if (*endptr != '/0')printf("Further characters after number: %s/n", endptr);exit(EXIT_SUCCESS);
}
linux c atoi strtol 区别相关推荐
- 你知道Linux和Unix的区别吗
有很多初学Linux的人比较关心Linux和windows的区别,这里还有一点就是Linux Unix的区别,弄清楚一些区别有助于我们对操作系统的了解.这里叙述Linux Unix的区别. Linux ...
- linux与unix的区别_Linux与Unix
linux与unix的区别 Linux与Unix. 两者之间有什么区别? (Linux vs Unix. What are the differences between the two?) If y ...
- Linux和Ubuntu的区别详解
近有很多人问小编,Linux和Ubuntu的区别是什么,我们用户应该如何选择? 想知道Linux和Ubuntu的区别,首先我们要明白,什么是Linux,什么是Ubuntu. 下面就此问题,小编今天专门 ...
- linux桌面版和服务器版区别_简单普及一些linux和windows的区别,减少新入手一些云服务时的不适应...
近一年,发的linux或者服务器之类的教程资源相对比较多,被问到一些令人头大的一些问题,也不知道怎么回答,可能需要稍微普及一点linux和windows的区别,虽然自己也是新人半桶水. 1.windo ...
- Mac 与 Linux Windows 常见使用区别
Mac 与 Linux Windows 常见使用区别 1 常见命令 2 常见操作 3 常见问题 4 说明 本文记录一些mac和linux.windows之间常见的使用区别,以便于有需要的读者查阅,后续 ...
- Linux和其他操作系统的区别
前言 这是我听老师讲课做的笔记,考试要看的. 这是视频地址 作者:RodmaChen 关注我的csdn博客,更多Linux笔记知识还在更新 为什么用Liunx系统 Linux和windows的区别 L ...
- linux与各操作系统的区别
Linux和Windows的区别 和Linux一样,Windows系列是完全的多任务操作系统.它们支持同样的用户接口.网络和安全性.但是,Linux和Windows的真正区别在于,Linux事实上是 ...
- Unix、Linux、Windows操作系统的区别
1.操作区别 linux区分大小写,windows在dos界面命令下不区分大小写: linux所有内容均以文件形式保存包括硬件,用户,而windows文件和硬件没什么关系,两个之间没有关联: wind ...
- TurboLinux入门教程:第六课Linux与其他操作系统的区别(转)
TurboLinux入门教程:第六课Linux与其他操作系统的区别(转) 第六课 Linux 与其他操作系统的区别 目前运行在 PC 机上的操作系统主要有 Microsoft 的 MS-DOS . W ...
最新文章
- java如何生成唯一码_java – 如何为方法实例生成唯一的哈希码?
- 一文掌握常用的机器学习模型(文末福利)
- 50个关于IPython的使用技巧,get起来!
- ViewPager嵌套ViewPager 滑动冲突
- 二维有限元方程matlab,有限元法求解二维Poisson方程的MATLAB实现
- 1.计算机语言发展史
- 阿里云 ecs mysql搭建_使用ECS和mysql搭建mysql服务器-阿里云开发者社区
- [Linux]gocron定时任务平台的部署
- cesiumjs开发实践(七) 3D模型
- 基于matlab 的图像重建,基于Matlab的2D-FFT图像重建软件的设计
- Spring IOC容器的依赖注入流程(收集和注册、分析和组装)
- go java 垃圾回收_JAVA什么时候执行垃圾回收以及回收流程-Go语言中文社区
- python数据分析与发展常用哪些软件_常用数据分析软件比较
- 坦克世界怎么显示服务器准心,坦克世界8.0环境设置详细教程
- 1308:【例1.5】高精除
- CMD命令下修改和查看IP地址,DNS,网关
- win10切换输入法快捷键_常用win10快捷键有哪些
- Android 5.0 CardView 应用
- python 爬取某音乐各排行榜【简易版本】
- 使用wxParse解析富文本的总结以及解决苹果手机上视频无法播放的方法