C语言之strtol函数用法详解

strtol 函数用法

strtol是一个C语言函数,作用就是将一个字符串转换为长整型long,其函数原型为:

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

下面我们来看下每个参数的意义:

str是要转换的字符

enptr是指向第一个不可转换的字符位置的指针

base的基数,表示转换成为几进制的数

两点注意:

  • 当 base 的值为 0 时,默认采用 10 进制转换,但如果遇到 '0x' / '0X' 前置字符则会使用 16 进制转换,遇到 '0' 前置字符则会使用 8 进制转换。
  • 若endptr 不为NULL,则会将遇到的不符合条件而终止的字符指针由 endptr 传回;若 endptr 为 NULL,则表示该参数无效,或不使用该参数。
string v = "1.10.2"; char *c = (char*)v.c_str();  long d = strtol(c, &c, 10); printf("%d\n", d); printf("%s\n", c);

上面这段代码先定义了一个值为"1.10.2"的字符串c,然后调用strtol后,此时的d为1,字符串c变成了".10.2"。

参考资料:

http://c.biancheng.net/cpp/html/129.html

到此这篇关于C语言之strtol函数用法详解的文章就介绍到这了,更多相关C语言之strtol函数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 用C语言实现三子棋游戏

    本文实例为大家分享了C语言实现三子棋游戏的具体代码,供大家参考,具体内容如下 初始工作,通过#define 定义一个标识符来表示一个常量(棋盘的横纵坐标) (因为在代码的编写中,会有多处需要用到坐标.那么,在阅读代码时就可能会导致读者疲于理解当前的值到底是代表什么,即会对代码的解读造成困扰.所以,在该代码中通过使用宏定义解决了这个问题,同时也方便后续更改棋盘的大小.) #define MAX_ROW 3 #define MAX_COL 3 游戏创建流程 1. 创建棋盘 创建棋盘(二维数组),并将

  • C语言实现扫雷项目

    本文实例为大家分享了C语言实现扫雷项目的具体代码,供大家参考,具体内容如下 核心思想就是,雷的分布看作是"答案",落子的棋盘看作是"考卷": 答卷的同时,需要去对一下"答案",这个位置有没有雷,有则BOOM!无则判断周围9宫格的雷的数量,返回这个字符打印至"考卷"上! 同时,为了防止数组越界,保证每一个格子都有九宫格,需要在行与列均多加2: 最后,判断输赢的标准:总格子数量-雷数 = 落子次数,即可判定胜利! 下面为测试模块:

  • 如何利用最简单的C语言实现AI五子棋

    目录 一.如何实现 二.实现代码及分析 (1)菜单的制作 (2)棋盘的初始化和打印 (3)玩家下子 (4)电脑下子 (5)判断输赢 三.整个代码 (1)test.c文件下代码: (2)game.c下的代码 (3)game.h下的代码 四.具体效果 1.棋盘打印以及选择先后手 2.玩家和电脑下子 3.判断输赢 总结 一.如何实现 1.说明:由于本文只是对初学C语言的人学习,所以将不会涉及任何算法,电脑将采用随机下子的方式.(后期会为大家介绍Alpha-Beta剪枝算法实现人工智能AI) 2.主要部

  • C语言实现扫雷经典游戏

    C语言实现扫雷游戏,供大家参考,具体内容如下 实现扫雷游戏 与三子棋游戏类似,为了便于后期对于代码的阅读.理解与地图大小和地雷的数量变更,先用#define定义一个标识符表示一个常量 (地图的大小.地雷的个数等) #define MAX_ROW 9 #define MAX_COL 9 #define mineNumber 10 游戏创建流程 1. 创建地图 在这里,showMap表示向玩家展示的地图,mineMap表示存放地雷的地图(不向玩家展示,用于后期判断玩家是否踩雷以及玩家所选择位置周围有

  • 深入了解C语言栈的创建

    目录 栈的结构定义如下: 栈的初始化如下: 栈元素的输入接口: 完整代码如下: 运行结果如下: 总结 栈:是限定仅在表尾进行插入和删除操作的线性表! 栈的结构定义如下: typedef struct Stack { SLDataType *base;//栈底元素的地址 int top;//栈顶元素的位置 } Stack; 栈的初始化如下: SLDataType initStack(Stack &S) { S.base=(SLDataType*)malloc(N*sizeof(SLDataType

  • C语言实现三子棋游戏简易版

    前言 提示:是黑白棋的一种.三子棋是一种民间传统游戏,又叫九宫棋.圈圈叉叉.一条龙.井字棋等.将正方形对角线连起来,相对两边依次摆上三个双方棋子,只要将自己的三个棋子走成一条线,对方就算输了.但是,有很多时候会出现和棋的情况. 一.三子棋游戏规则 子棋也叫做OOXX棋,井字棋等,用"井"字分出3×3的格子,双方轮流下棋子(可以用O或者X来区别),只要将自己的三个棋子走成一条线,就算获胜. 二.基本流程 在实现三子棋代码之前,我们来看看实现这个游戏的逻辑: 1.建立一个游戏菜单. 2.创

  • 使用C语言实现三子棋游戏

    本文实例为大家分享了C语言实现三子棋游戏的具体代码,供大家参考,具体内容如下 先简单介绍一下我的三子棋小游戏是怎么玩的,就是自己跟电脑pk,只不过电脑没这么智能.自己输入想要下的坐标,电脑随机生成一个坐标,直到赢家产生.在这个过程中我觉得比较难的就是赢家的判定部分.在c语言中随机数的产生也就是调用srand()函数利用时间戳来获取随机值.算了游戏太简单,我想你们也都是冲着代码来的,直接上代码. 代码和实现 为了代码逻辑性更高,没那么繁杂,主要将代码分为三个部分,头文件game.h,和两个c文件,

  • 用C语言实现简单扫雷小游戏

    前言 今天学习了制作简易扫雷游戏,代码如下 提示:以下是本篇文章正文内容,下面案例可供参考 一.函数头文件(函数声明) 代码如下(示例): #pragma once #define ROW 9 #define COL 9 #define ROWS ROW+2 #define COLS COL+2 #define EASY_COUNT 10 #include<stdlib.h> #include<time.h> //初始化棋盘 void initboard(char board[RO

  • 详细了解C语言二叉树的建立与遍历

    目录 这里给一个样例树: 总结 这里给一个样例树: 代码: #include <stdio.h> #include <string.h> #include <stdlib.h> /* 二叉树的二叉链表结点结构定义 */ typedef struct BiTNode { char data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; BiTree T=NULL; /* 先序遍历建立一个二叉树 */ void Cre

  • C语言之strtol函数用法详解

    strtol 函数用法 strtol是一个C语言函数,作用就是将一个字符串转换为长整型long,其函数原型为: long int strtol (const char* str, char** endptr, int base); 下面我们来看下每个参数的意义: str是要转换的字符 enptr是指向第一个不可转换的字符位置的指针 base的基数,表示转换成为几进制的数 两点注意: 当 base 的值为 0 时,默认采用 10 进制转换,但如果遇到 '0x' / '0X' 前置字符则会使用 16

  • C语言fgetc和fputc函数用法详解(以字符形式读写文件)

    在C语言中,读写文件比较灵活,既可以每次读写一个字符,也可以读写一个字符串,甚至是任意字节的数据(数据块).本节介绍以字符形式读写文件. 以字符形式读写文件时,每次可以从文件中读取一个字符,或者向文件中写入一个字符.主要使用两个函数,分别是 fgetc() 和 fputc(). 字符读取函数 fgetc fgetc 是 file get char 的缩写,意思是从指定的文件中读取一个字符.fgetc() 的用法为: int fgetc (FILE *fp); fp 为文件指针.fgetc() 读

  • C语言 array数组的用法详解

    目录 一维数组的创建与初始化 程序一: 程序二: 程序三 程序四(二维数组 - 二维数组 的 列 绝对不能 省略 ) 二维数组在内存中的存储 程序一 数组作为函数参数,怎么作? 实例:冒泡排序 数组名: 一维数组的创建与初始化 数组是一种相同类型元素的集合 程序一: #include<stdio.h> #include<string.h> int main() { 创建一个数组 int arr1[10];// [常量] 初始化 int arr[10]={1,2,3};不完全初始化,

  • Go语言学习之WaitGroup用法详解

    目录 前言 小试牛刀 总览 底层实现 结构体 Add Done Wait 易错点 总结 前言 在前面的文章中,我们使用过 WaitGroup 进行任务编排,Go语言中的 WaitGroup 和 Java 中的 CyclicBarrier.CountDownLatch 非常类似.比如我们有一个主任务在执行,执行到某一点时需要并行执行三个子任务,并且需要等到三个子任务都执行完后,再继续执行主任务.那我们就需要设置一个检查点,使主任务一直阻塞在这,等三个子任务执行完后再放行. 说明:本文中的示例,均是

  • C语言const关键字的用法详解

    目录 1 介绍 1.1 const修饰变量 1.2 const修饰数组 1.3 const修饰指针 1.4 const修饰函数参数 2 const对程序的影响 3 总结 1 介绍 const关键字是constant的缩写,翻译为常量.常数.在C语言中const的作用很强大,它可以修饰变量.数组.指针.函数参数等. 1.1 const修饰变量 const修饰变量,表示希望此变量具有只读性,防止被直接直接修改. //const关键字是constant的缩写,翻译为常量.常数. //在C语言中cons

  • JavaScript中eval()函数用法详解

    eval() 函数计算 JavaScript 字符串,并把它作为脚本代码来执行. 如果参数是一个表达式,eval() 函数将执行表达式.如果参数是Javascript语句,eval()将执行 Javascript 语句. 语法 复制代码 代码如下: eval(string) 参数 描述 string 必需.要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句. eval()函数用法详解: 此函数可能使用的频率并不是太高,但是在某些情况下具有很大的作用,下面就介绍一下eva

  • Python的Lambda函数用法详解

    在Python中有两种函数,一种是def定义的函数,另一种是lambda函数,也就是大家常说的匿名函数.今天我就和大家聊聊lambda函数,在Python编程中,大家习惯将其称为表达式. 1.为什么要用lambda函数? 先举一个例子:将一个列表里的每个元素都平方. 先用def来定义函数,代码如下 def sq(x): return x*x map(sq,[y for y in range(10)]) 再用lambda函数来编写代码 map(lambda x: x*x,[y for y in r

  • Python中flatten( )函数及函数用法详解

    flatten()函数用法 flatten是numpy.ndarray.flatten的一个函数,即返回一个一维数组. flatten只能适用于numpy对象,即array或者mat,普通的list列表不适用!. a.flatten():a是个数组,a.flatten()就是把a降到一维,默认是按行的方向降 . a.flatten().A:a是个矩阵,降维后还是个矩阵,矩阵.A(等效于矩阵.getA())变成了数组.具体看下面的例子: 1.用于array(数组)对象 >>> from n

  • pytorch中torch.max和Tensor.view函数用法详解

    torch.max() 1. torch.max()简单来说是返回一个tensor中的最大值. 例如: >>> si=torch.randn(4,5) >>> print(si) tensor([[ 1.1659, -1.5195, 0.0455, 1.7610, -0.2064], [-0.3443, 2.0483, 0.6303, 0.9475, 0.4364], [-1.5268, -1.0833, 1.6847, 0.0145, -0.2088], [-0.86

  • python isinstance函数用法详解

    这篇文章主要介绍了python isinstance函数用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 isinstance() 函数来判断一个对象是否是一个已知的类型类似 type(). isinstance() 与 type() 区别: type() 不会认为子类是一种父类类型,不考虑继承关系. isinstance() 会认为子类是一种父类类型,考虑继承关系. 如果要判断两个类型是否相同推荐使用 isinstance(). 语法

随机推荐