【C语言】从字符串中提取正整数和负整数
测试用例1:
提取字符串中的数据:"-2022date:2022-08-21 10:20"
期望值:-2022 2022 8 21 10 20
测试用例2:
提取字符串中的数据:"-2022text:-20ABCD--21 -2022- -23 EF-24EF 2022-02-21 11:04:36"
期望值:-2022 -20 21 2022 -23 -24 2022 2 21 11 4 36
注意:当字符串中出现--20, -2022-,2022-08-21中的-21都不算作合法的负数。-20ABC,EF-22EF,-20等提取出的负数算作合法负数。
/**********************************************************************
* 函数名:GetDecDigitFromString
* 描述:从字符串中提取整数,包括正整数和负整数,但不能提取浮点数
* 参数:
* s:输入的字符串首地址
* out:输出数据的首地址
* maxNum:最多提取数据的个数
************************************************************************/
#include <stdio.h>
typedef unsigned int WORD32;
typedef int SWORD32;
/*********************************************************************** 函数名:GetDecDigitFromString* 描述:从字符串中提取整数,包括正整数和负整数,但不能提取浮点数* 参数:* s:输入的字符串首地址* out:输出数据的首地址* maxNum:最多提取数据的个数* */
WORD32 GetDecDigitFromString(const char *s, SWORD32 *out, WORD32 maxNum)
{WORD32 idx = 0;const char *startPos = s;while(idx < maxNum && *s != '\0'){SWORD32 value = 0, isDigit = 0, sign = 1;while(*s != '\0'){if(*s >= '0' && *s <= '9'){value = value * 10 + (*s - '0');isDigit = 1;/*判断前一个字符是否是'-'且再前面一个字符不是数字或者'-',即剔除2022-08-21中的-21和--21*/if(((s - 1 == startPos && *startPos == '-') || *(s - 1) == '-')&& (*(s - 2) != '-' && (*(s - 2) < '0' || *(s - 2) > '9'))){sign = -1;}s++;}else if(isDigit){/* -2022-不符合负数,只提取2022 */if(*s == '-') sign = 1;startPos = s;s++;break;}else{s++;}}if(isDigit) *(out + idx++) = sign * value;}return idx;
}#define PrintfData(buf,len) \
do{\for(int i = 0; i < len;++i)\{\printf("%d ",buf[i]);\}\printf("\n");\
}while(0)void TestGetDecDigitFromString(void)
{// 测试值提取数值const char *s1 = "-2022date:2022-08-21 10:20";SWORD32 outDate[5] = {0};WORD32 num = GetDecDigitFromString(s1, outDate, 5);PrintfData(outDate, num);// 测试提取合适的负数const char *s2 = "-2022text:-20ABCD--21 -2022- -23 EF-24EF 2022-02-21 11:04:36";SWORD32 outFS[12] = {0};num = GetDecDigitFromString(s2, outFS, 12);PrintfData(outFS, num);
}int main(void)
{setvbuf(stdout,NULL,_IONBF,0);TestGetDecDigitFromString();return EXIT_SUCCESS;
}
测试结果:
-2022 2022 8 21 10 20
-2022 -20 21 2022 -23 -24 2022 2 21 11 4 36
【C语言】从字符串中提取正整数和负整数相关推荐
- c语言实现字符串中提取数字,遇到非字符串则换行
思路:将str里面的数字复制到deststr中,如果是非数字则赋值一个换行符 难点在于换行符添加后,deststr需要步进1,所以设置两个计数器strno和destno用于控制deststr何时步进
- R语言str_sub函数从字符串中提取或替换子字符串(substring):str_sub函数指定起始位置和终止位置抽取子字符、str_sub函数指定起始位置和终止位置替换子字符串
R语言str_sub函数从字符串中提取或替换子字符串(substring):str_sub函数指定起始位置和终止位置抽取子字符.str_sub函数指定起始位置和终止位置替换子字符串 目录
- 【R语言】正则表达式 从字符串中提取数字
R语言 正则表达式 从字符串中提取数字 pattern <- "(?<ID>[0-9]+)" result <- regexpr(pattern= patt ...
- 从字符串中提取IP子串(C语言)
1 目标 ① 从字符串中提取IP子串 ② 验证IP字符串是否合法(IPV4) 2 代码 ① ip地址提取 /*** @brief : IPv4地址提取* @param in_ip : 待提取字符串* ...
- 趣味编程:从字符串中提取信息(参考答案 - 上)
这次"趣味编程"的目的是解析字符串,从一个指定模式的字符串中提取信息.对于目前这个问题,解决方案有很多种,例如直接拆分,使用正则表达式,或是如现在本文这般按照顺序解析.总结果上来说 ...
- java从字符串中提取数字
1.做一下操作时会一般会用到提取数字操纵: a.列表中有翻页,当新添加的数据不是放在第一条或者最后一条时,需要翻页并循环找到对应的那条数据 b.当新添加的数据放在第一条或者最后一条时,则不需要翻页,只 ...
- 【转】SQL函数:字符串中提取数字,英文,中文,过滤重复字符
SQL函数:字符串中提取数字,英文,中文,过滤重复字符 --提取数字 IF OBJECT_ID('DBO.GET_NUMBER') IS NOT NULL DROP FUNCTION DBO.GET_ ...
- 从html中提取手机号码,C#从字符串中提取电话号码、手机号码
C#程序目的:从一堆字符串中提取电话号码.手机号码,要求字符串中的号码以非数字字符分割.原理:利用正则表达式提取纯数字字符串数组,然后利用长度等号码特征,筛选过滤. 代码: //思路仅供参考 //nu ...
- python正则表达式提取数字比较好_python正则表达式从字符串中提取数字的思路详解...
python从字符串中提取数字 使用正则表达式,用法如下: ## 总结 ## ^ 匹配字符串的开始. ## $ 匹配字符串的结尾. ## \b 匹配一个单词的边界. ## \d 匹配任意数字. ## ...
- android字符串获取数字索引,从字符串中提取特定数据(Extract specific data from a string)...
从字符串中提取特定数据(Extract specific data from a string) 我有一个带有描述的长字符串. 我想从字符串中提取一些信息. 但我无法弄明白该怎么做. 这是字符串: C ...
最新文章
- 【笔记】2010-11-25记录
- 科普|推荐系统常用算法总结
- 八种基本排序方式(插入排序,希尔排序,选择排序,冒泡排序,快速排序,堆排序,归并排序,基数排序)代码模板以及时间复杂度
- python 当前目录_virtualenvwrapper打造多版本Python环境
- win7上修改MySQL数据库密码
- 电脑html外链加密,WordPress 无需插件外链加密转内链
- (转)C#中的Abstract和Virtual函数区分,因我老弄不明白这个问题,所以转到这儿
- paip.android 读取docx总结
- Halcon 3D 1 读取3d数据
- MII/MDIO接口详解
- 可能是全网最全的解决无法创建视频捕捉过滤器问题?
- 如何获取Linux的主机名和域名?
- 用参数方程绘制椭球体
- STP配置 HSRP配置 端口追踪
- R语言基础图形绘制——箱线图
- [高通SDM450][Android9.0]CTA认证--拆分申请权限分组
- 2018年要过去了,年初说好要上完的网课呢?
- [Linux]命令查找一个文件
- 银河系创投徐芳:专注B2B这片热土,燃起产业新势能 | To B 50+
- 计算机毕业设计Java馥郁花艺网站mp4(源码+系统+mysql数据库+lw文档)
热门文章
- 使用Django创建一份在线简历
- 记一次用Python统计全国女性Size
- 有两个瓶子,一个瓶子是5升_隐藏的功能,装在瓶子中的消息和痴呆的面包师。...
- ANSYS APDL 绘制云图时出现错误“The Requested S data is not available. The PLNSOL command is ignored“的解决方法
- 德军总部2新巨人计算机丢失,德军总部2新巨人打不开怎么办 德军总部2新巨像进不去解决方法...
- vs2016 程序在vs2019 运行,显示无法找到 Intel C++ Compiler XE14.0解决方案
- 三维空间直角坐标系转换(2)——改进七参数小旋转角的局限
- Linux系统管理、系统安全命令概述
- 64位系统装32位计算机,64位电脑装32位系统,教您64位电脑怎么装32位系统
- 解决IDEA启动失败 Improperly specified VM option...问题