C语言从字符串中提取数字

2023-11-12

利用正则表达式:

参考:http://blog.csdn.net/yangbingzhou/article/details/51352648

 

#include <regex.h>

	char tmpbuf[128] = {0};
	char buffer[128] = {0};
	char sizebuf[30] = {0};
	int ret = 0, res = 0;
	int size = 0;
	regex_t re;
	regmatch_t match[1];

	memset(&re, 0, sizeof(re));
	res = regcomp(&re, "[0-9]+", REG_EXTENDED);
	if (res) {
		sprintf(ddr_size, "Unknown");
		goto out;
	}
	ret = regexec(&re, tmpbuf, 1, match, 0);
	if (ret == 0 && match[0].rm_so >= 0)
		memcpy(sizebuf, &tmpbuf[match[0].rm_so],
			(match[0].rm_eo-match[0].rm_so));
	size = atoi(sizebuf);

如果是格式已知的字符串, 如 "profile3", 从中提取数字3, 则可以使用函数sscanf, 如下:

char profile[20] = "profile3";
int err, profile_id;
err = sscanf(profile, "profile%d", &profile_id);

参考: https://www.cnblogs.com/lanjianhappy/p/6861728.html

 

例子: 从文件中提取数字

static int get_isp_bufnum(int width, int height)
{
	FILE *f = NULL;
	int got = 0;
	char *s, tmp_buf[256];
	int resv_mem = 0;
	int buf_num = 0;
#define RESV_MEM_PATH "/sys/devices/platform/rts_soc_camera/meminfo"

	if (width * height <= 1280 * 720)
		return 3;

	f = fopen(RESV_MEM_PATH, "r");
	if (f != NULL) {
		while (!got) {
			s = fgets(tmp_buf, sizeof(tmp_buf), f);
			if (s == NULL)
				break;

			if (sscanf(tmp_buf, "total : %d", &resv_mem) == 1) {
				if (resv_mem >= 32 * 1024 * 1024)
					buf_num = 3;
				else
					buf_num = 2;
				got = 1;
				pe_log(PM, AV_LOG_INFO, "resv_mem %d\n",
						resv_mem);
			}
		}
		fclose(f);
	}

	if (!got)
		buf_num = 2;

	return buf_num;
}

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

 

参数base范围从2至36,或0。参数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制等。当base值为0时则是采用10进制做转换,但遇到如’0x’前置字符则会使用16进制做转换、遇到’0’前置字符而不是’0x’的时候会使用8进制做转换。

一开始strtol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时('\0')结束转换,并将结果返回。若参数endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr返回;若参数endptr为NULL,则会不返回非法字符串。

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言从字符串中提取数字 的相关文章

  • python教程-Python快速教程

    作者 Vamei 出处 http www cnblogs com vamei 欢迎转载 也请保留这段声明 谢谢 怎么能快速地掌握Python 这是和朋友闲聊时谈起的问题 Python包含的内容很多 加上各种标准库 拓展库 乱花渐欲迷人眼 我
  • 1500*B. Coloring(找规律&鸽巢原理)

    include
  • STM32-GPIO介绍

    目录 1 概述 2 GPIO工作原理 2 1 保护二极管及上下拉电阻 2 2 GPIO工作模式 2 2 1 浮空输入模式 2 2 2 上拉输入模式 2 2 3 下拉输入模式 2 2 4 模拟输入模式 2 2 5 开漏输出模式 2 2 6 开
  • 使用python实现微信小程序自动签到

    学校 重庆财经职业学院 学院 应用技术学院 专业班级 大数据技术与应用05班 名字 吴雨璇 指导老师 张彤老师 一 使用python实现微信小程序自动签到意义 1 首先对于咱们的APP有很大的作用 那就是当用户点击签到以后 平台就有那么多用
  • 基于梯度的优化算法

    梯度下降优化算法 大多数学习算法都涉及到优化 优化是指改变 x 以最小化或者最大化某个函数 f x 的过程 通常我们所说的优化算法都是指最小化的过程 因此 最大化的过程可以通过最小化 f x 来实现 导数是指某个函数 f x 在某一点上的斜
  • 有趣的数学 数学建模入门二 一些理论基础

    一 什么是数学建模 现实世界中混乱的问题可以用数学来解决 从而产生一系列可能的解决方案来帮助指导决策 大多数人对数学建模的概念感到不舒服 因为它是如此开放 如此多的未知信息似乎令人望而却步 哪些因素最相关 但正是现实世界问题的这种开放性导致
  • 文件索引习题

    1 设文件索引结点中有8个地址项 每个地址项大小为4字节 其中5个地址项为直接地址索引 2个地址项是一级间接地址索引 1个地址项是二级间接地址索引 磁盘索引块和磁盘数据块大小均为1KB 则可表示的单个文件最大长度是多少KB 解 磁盘索引块为
  • Linux基础命令练习题附答案解析(一)

    1 在 Linux 系统的 vi 编辑器中 如果不保存对文件进行的修改 强制退出 vi 编辑器的命令是 A q B wq C q D q 表示切换到命令模式 以在最底一行输入命令 q quit 表示退出 vi w write 表示保存文件
  • C#实现Omron欧姆龙PLC的Fins Tcp协议[转]

    转自 https blog csdn net yxt99 article details 79984153 commentBox 感谢作者 yxt99 欧姆龙PLC的FINS协议解释 UDP访问方式 读取示例 读取DM区20个字 从DM10
  • 解决openwrt opkg内核版本不匹配问题

    假设安装软件时提示需要5 4 65版本的内核 然而 系统的内核时5 4 52 root Openwrt uname a Linux Openwrt 5 4 52 0 SMP Thu Jul 23 12 16 45 2020 x86 64 O
  • opengl-shader学习笔记:varying变量

    varying变量可以在Vertex Shader和Fragment Shader之间传递数据 渲染管线中应用程序调用openglAPI 把顶点数据传给Vertex Shader Vertex Shader处理完后输出数据给Fragment
  • javaWeb基础二:Servlet(java前后端交互的技术)

    2 Servlet 2 1 定义 Servlet是sun公司提供的一门用于开发动态web资源的技术 可以实现和客户端的交互 接收客户端请求和给客户端返回响应 Sun公司在其API中提供了一个servlet接口 用户若想开发一个动态web资源
  • 获取id_rsa.pub和id_rsa.pub的作用

    SSH SSH为Secure Shell的缩写 由IETF的网络小组 Network Working Group 所制定 SSH为建立在应用层基础上的安全协议 SSH是目前较可靠 专为远程登录会话和其他网络服务提供安全性的协议 利用SSH协
  • Ubuntu 20.04 搭建NFS server

    文章目录 一 测试环境 二 安装 NFS server 一 测试环境 Ubuntu 20 04 64位 二 安装 NFS server 执行以下命令 sudo apt get install nfs kernel server 出现报错 从
  • C Primer Plus 第一章编程练习

    第一章 1 13编程练习 题 目 你刚被MacroMuscle有限公司聘用 该公司准备进入欧洲市场 需要一个把英尺单位转换为厘米单位 1英寸 2 54厘米 的 程序 该程序要提醒用户输入英寸值 你的任务是定义程序 目标和设计程序 编程过程的
  • 杂项(每天看到的感兴趣的)

    Tomcat最大承受的并发数 Tomcat的最大并发数取决于多个因素 包括硬件资源 如CPU 内存等 网络带宽 应用程序性能以及Tomcat本身的配置 在默认情况下 Tomcat可以处理的最大并发连接数为200 然而 在实际生产环境中 这个

随机推荐

  • 华为OD机试(JAVA)真题 -- 输出最大差

    import java util Arrays import java util Scanner 判断一组不等式是否满足约束并输出最大差 给定一组不等式 判断是否成立并输出不等式的最大差 输出浮点数的整数部分 要求 1 不等式系数为doub
  • Python简单制作GUI界面

    不管你是 Mac OS 系统 还是 Windows 系统 它都可以生成相对应的操作界面 这就是所谓的跨平台 其原理就是我们使用 Python代码去调用 Tkinter Tkinter 已经封装了访问TK的接口 这个接口是一个图形库 支持多跨
  • vscode写PHP代码双击无法复制变量$ 解决方法

    第一步 文件 gt 首选项 gt 设置 第二步 设置里面搜索 word separators 然后用此处的正则替换红框处的正则配置 lt gt
  • 实训三:文件系统命令及vi编辑

    实训三 文件系统命令及vi编辑 2017年 11 月 1 日 今日公布 vim 编辑又三种模型 一般模式 命令模式 编辑模式 练习1 Linux文件系统管理命令 分别用下列命令创建两个用户 useradd 用户名 创建一个用户 passwd
  • 毕业设计 基于Arduino工业温度计

    0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新和亮点 往往达不到毕业答辩的要求 这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求 为了大家能够顺利以及最少的精力通过毕设 学长分享优质毕业设计项
  • 第十四届蓝桥杯校内模拟赛(第二期)题解分享

    文章目录 填空题 最小数 数天数 非常特殊的数 最大值路径 拆分质数个数 编程题 文件拷贝 去除重复单词 变成回文字符串 找X图案 交换的代价 本篇文章中的题解是我在比赛中的思路或者所写的代码 总结出的一篇相对来说比较清晰的个人题解 希望要
  • python抓网页数据(python爬取网站数据)

    标题 Python神器 抓取网页数据轻松搞定 Python语言作为一种强大的编程工具 不仅在数据分析 人工智能等领域大放异彩 而且在网络爬虫方面也有着出色的表现 利用Python抓取网页数据已成为许多程序员和研究人员的首选方法 下面就让我们
  • 几种常见的HTML分割线

    分享一下我老师大神的人工智能教程 零基础 通俗易懂 http blog csdn net jiangjunshow 也欢迎大家转载本篇文章 分享知识 造福人民 实现我们中华民族伟大复兴 一 基础代码 1 hr 2 hr align cent
  • git使用之上传项目文件到本地仓库

    git使用方式 一 初始化基本信息 1 设置用户名 git config global user name 用户名 例如 git config global user name gumeimen 2 设置邮箱 git config glob
  • c++模板实参推断

    模板实参推断 类型转换与模板类型参数 template
  • this 和 super的区别

    1 this的用法 this 关键字 1 作用范围 本类 不是实例化的对象 而是正在写的对象 2 作用效果 1 表示当前对象 简单来说就是来区分哪个是形参那个是成员变量 例 public void show String name this
  • 制作一份简单的网络地图(世博地图的配准和切割)

    其实我很早的时候就写过一篇 我的 2010世博地图1 0版发布 但没有和大家做明确的说明和制作方法 今天就和大家一起来分享地图配准和地图切割并进行网络发布的问题 其实就是以世博为例制作一份简单的网络地图 网络地图是以Google Maps
  • postgresql日期时间范围查询:一年前到现在日期时间范围

    获取当前时间方式 1 获取当前日期时间 SELECT CURRENT TIMESTAMP 2019 09 02 11 27 37 282 08 2 获取当前时间 SELECT CURRENT TIME 11 28 39 636 08 3 获
  • 【Unity 3D】学习笔记 - 粒子系统初探

    Particle System是Unity内用于制作特效的系统 相对比较复杂 粒子系统可以用来制作烟雾 蒸汽 火焰和其他雾化效果 添加粒子系统 GameObject gt Effect gt Particle System 添加一个粒子系统
  • Python使用历史数据模拟法计算投资组合VaR(数据来源为Tushare)

    Python如何使用历史数据模拟法计算投资组合VaR 数据来源为Tushare 本文数据可以点赞关注私信我获取 VaR Value at Risk 是一种常用的风险管理指标 用于衡量投资组合在特定时间内的最大可能损失 历史数据模拟法是一种计
  • Android:年过35岁的程序员还有出路吗,rxjava面试题

    通过上面网友们的分析 其实大家也看的出一个情况 领导选择用你的标准之一 一定是能力的大小 如果技术过硬 年龄从来不会是第一标准 还记得你第一次写代码的时候吗 那种难以抗拒的兴奋和激动 你说你不如年轻人敏捷了 不如他们聪明了 都不是 只是因为
  • C++转换函数

    一 定义 转换构造函数是将其他类型转化为当前class类型 反之 就是转换函数 转换函数的定义格式 operator type TODO return data operator 是 C 关键字 type 是要转换的目标类型 data 是要
  • 【学习笔记】编程规约

    概述 阿里Java开发手册对编程规约 异常日志 单元测试 安全规约 MySQL数据库 工程结构 设计规约进行了规范并且进行了开源 整个手册针对java程序的诞生过程进行较为全面的规范 并且有插件 P3C 进行检查 结尾附地址 即使不是jav
  • 剑指offer_第3题_从尾到头打印链表

    题目描述 输入一个链表 按链表值从尾到头的顺序返回一个ArrayList 链表结构 class ListNode def init self x self val x self next None 理解 什么是链表 python数据结构之链
  • C语言从字符串中提取数字

    利用正则表达式 参考 http blog csdn net yangbingzhou article details 51352648 include