首页 > 其他分享 >strtol() 函数

strtol() 函数

时间:2024-02-06 09:56:37浏览次数:22  
标签:strtol 函数 int char str 字符串 endptr

功能概述:字符串转换为数值。其声明 位于头文件<stdlib.h>

C 库函数 long int strtol(const char *str, char **endptr, int base) 把参数 str 所指向的字符串根据给定的 base 转换为一个长整数(类型为 long int 型),base 必须介于 2 和 36(包含)之间,或者是特殊值 0。

参数
str -- 要转换为长整数的字符串。
endptr -- 对类型为 char* 的对象的引用,其值由函数设置为 str 中数值后的下一个字符。
base -- 基数,必须介于 2 和 36(包含)之间,或者是特殊值 0。如果 base 为 0,则会根据字符串的前缀来判断进制:如果字符串以 '0x' 或 '0X' 开头,则将其视为十六进制;如果字符串以 '0' 开头,则将其视为八进制;否则将其视为十进制。

返回值
函数返回被转换的长整型整数值。如果输入字符串不符合数字格式,strtol() 将返回 0。如果转换结果超出了 long 整数的表示范围,那么将产生溢出,并设置 errno 为 ERANGE。你可以使用 <errno.h> 头文件中的 errno 变量来检查是否有溢出发生。

 

#include <stdlib.h>
#include <string.h>
#include <stdio.h>

int str2i(const char *str, char split, char **endptr)
{
    int ret = 0;
    ret = strtol(str, endptr, 10);
    if (*endptr != NULL) {
        if (**endptr == split) {
            *endptr += 1;
        }
    }

    return ret;
}

int main(void)
{
    char *test_str = "1,2,3,4,5";
    char *end = NULL;
    int res[5] = {0};
    char *p_shift = test_str;

    for (int i = 0; i < 5; i++) {
        res[i] = str2i(p_shift, ',', &end);
        p_shift = end;
    }

    for (int i = 0; i < 5; i++) {
        printf("%d ", res[i]);
    }
}

 

标签:strtol,函数,int,char,str,字符串,endptr
From: https://www.cnblogs.com/tryst/p/18009182

相关文章

  • Fork - 进程管理中一个重要的函数
    思考问题:当首次调用新创建进程时,其入口在哪里?系统调用fork函数是如何创建进程的?系统调用exec系列函数是如何更换进程的可执行代码的?1.1进程是如何创建的?在Linux系统启动时,最早通过init_task产生的进程是idle进程,也称为swapper进程,其pid为0。该进程会调用......
  • 无涯教程-LOG10E函数
    E的以10为底的对数,约为0.434。LOG10E-语法Math.LOG10ELOG10E-示例console.log(Math.LOG10E)//thebase10logarithmofMath.E:0.434运行上面代码输出0.4342944819032518参考链接https://www.learnfk.com/es6/es6-math-property-log10e......
  • GPT 中的函数调用(function call)是什么?
    在OpenAIChatGPTAPI和GoogleGeminiAPI中我们可以看到函数调用的功能。这个功能是做什么用的?下面大概讲解。以GoogleGeminiAPI函数调用一节中的内容为例,该章节举了一个例子:大语言模型(LLMs)往往无法进行准确的数学运算。比如说,给Gemini两个数\(a\)和\(b\),让它计......
  • 无涯教程-LN10函数
    自然对数为10,约为2.302。LN10-语法Math.LN2LN10-示例console.log(Math.LN10)//thenaturallogarithmof10:~2.303运行上面代码输出2.302585092994046参考链接https://www.learnfk.com/es6/es6-math-property-ln10.html......
  • Springboot在编写CRUD时,访问对应数据函数返回null
    1.我遇到了什么问题我在学习springboot,其中在编写CRUD时发现访问数据的函数执行下去返回值是null但是其它部分正常。下面是我的错误代码pojopublicclassBot{@TableId(type=IdType.AUTO)privateIntegerid;privateIntegeruser_id;privateStr......
  • 无涯教程-LN2函数
    它返回2的自然对数,大约为0.693。LN2-语法Math.LN2LN2-示例console.log(Math.LN10)//thenaturallogarithmof10:~2.303运行上面代码输出0.6931471805599453参考链接https://www.learnfk.com/es6/es6-math-property-ln2.html......
  • 无涯教程-E函数
    这是一个欧拉常数,是自然对数的底数,大约为2.718。E-语法Math.EE-示例console.log(Math.E)//therootofthenaturallogarithm:~2.718运行上面代码输出2.718281828459045参考链接https://www.learnfk.com/es6/es6-math-property-e.html......
  • 函数的周期性的作用
    前言函数的周期性到底对研究函数有什么作用?作用列举做函数的图象由\(y=\sinx\),\(x\in[0,2\pi]\)的图像拓展到\(y=\sinx\),\(x\inR\)的图像,就是利用的函数的周期的作用。解三角不等式,常常是涉及有周期性的函数;比如求解不等式的思路:\(\sinx>\cfrac{1}{2}\),更多......
  • 无涯教程-valueOf()函数
    valueOf方法返回Date对象的原始值,即自UTC1970年1月1日午夜以来的毫秒数。valueOf()-语法Date.valueOf()valueOf()-返回值返回Date对象的原始值。valueOf()-示例vardateobject=newDate(1993,6,28,14,39,7);console.log(dateobject.valueOf());......
  • 无涯教程-toTimeString()函数
    此方法把Date对象的时间部分转换为字符串。toTimeString()-语法Date.toTimeString()toTimeString()-返回值形式返回Date对象的时间部分。toTimeString()-示例vardateobject=newDate(1993,6,28,14,39,7);console.log(dateobject.toTimeString());......