首页 > 编程知识 正文

函数stripplot的作用,strtok分割字符串成数组

时间:2023-05-05 01:19:55 阅读:262028 作者:1526

前言

在C/C++编程中,经常会遇到将字符串转换成数值的场景需求,其实在C标准库中已经给我们提供了很多功能函数。

常用字符串转数值函数列表

头文件

#include <stdlib.h> ato-x函数 名称含义相似功能函数double atof(const char *nptr)将字符串转换成double值strtod(nptr, NULL)int atoi(const char *nptr)将字符串转换成int值strtol(nptr, NULL, 10)long atol(const char *nptr)将字符串转换成int值strtol(nptr, NULL, 10)long long atoll(const char *nptr)将字符串转换成int值strtoll(nptr, NULL, 10)strto-xx 名称含义double strtod(const char *nptr, char **endptr)将字符串转换为double值float strtof(const char *nptr, char **endptr)将字符串转换为float值long double strtold(const char *nptr, char **endptr)将字符串转换为long值long strtol(const char *nptr, char **endptr, int base)将字符串转换为base进制的long值long long strtoll(const char *nptr, char **endptr, int base)将字符串转换为base进制的long long值unsigned long strtoul(const char *nptr, char **endptr, int base)将字符串转换为base进制的unsigned long值unsigned long long strtoull(const char *nptr, char **endptr, int base)将字符串转换为base进制的unsigned long long值ato-x和strto-x的区别

我们以atol和strtol为例进行分析

atol 相对简单,只对字符串简单判断,如果第一个字符是非法字符,返回0,如果前面是有效
数值,返回前面的数值,后面非法的不返还。strtol将字符串转换为长整数,base为进制数, 如果转换成功,endptr指向字符串首地址,
反之,则指向第一个非法字符。ato-x 不会检测错误,也就是errno,而strto-x函数则会触发errno变化 编程示例 #include <stdio.h>#include <stdlib.h>int main(int argc, char *argv[]) {const char *nptr1 = "12345678ab";const char *nptr2 = "987654321012ab";char *pend;long ltmp1, ltmp2;unsigned long long lltmp1, lltmp2;printf("**************************************n");printf("atol strtol long test:n");printf("n");ltmp1 = atol(nptr1);ltmp2 = strtol(nptr1, &pend, 10);printf("ltmp1:%ldn", ltmp1);printf("ltmp2:%ld [%s]n", ltmp2, pend);printf("n");printf("**************************************n");printf("atol strtol long long test:n");printf("n");ltmp1 = atol(nptr2);ltmp2 = strtol(nptr2, &pend, 10);printf("ltmp1:%ldn", ltmp1);printf("ltmp2:%ld [%s]n", ltmp2, pend);printf("n");printf("**************************************n");printf("atoll strtoll long long test:n");printf("n");lltmp1 = atoll(nptr2);lltmp2 = strtoull(nptr2, &pend, 10);printf("lltmp1:%lldn", lltmp1);printf("lltmp2:%lld [%s]n", lltmp2, pend);return 0;}

测试结果:

注意: 本例中,我们的示例字符串超过了long型范围,也就是long long。

小结

ato-x 相当于简版的strto-x函数,对于简单的应用,我们可以直接使用atoi、atof、atol、atoll函数,在linux下,尤其对于安全性要求高的,可以使用strto-x或strto-u-x函数。

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