[牛人杂谈] 如何更灵活的从字符串中提取数字

[复制链接]
3019|29
 楼主| 玛尼玛尼哄 发表于 2023-12-25 22:05 | 显示全部楼层 |阅读模式
C 库函数 double strtod(const char *str, char **endptr) 把参数 str 所指向的字符串转换为一个浮点数(类型为 double 型)。如果 endptr 不为空,则指向转换中最后一个字符后的字符的指针会存储在 endptr 引用的位置。
str -- 要转换为双精度浮点数的字符串。
endptr -- 对类型为 char* 的对象的引用,其值由函数设置为 str 中数值后的下一个字符。

该函数返回转换后的双精度浮点数,如果没有执行有效的转换,则返回零(0.0)。
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. int main()
  4. {
  5.   char str[30] = "20.30300 This is test";
  6.    char *ptr;
  7.    double ret;

  8.    ret = strtod(str, &ptr);
  9.    printf("数字(double)是 %lf\n", ret);
  10.    printf("字符串部分是 |%s|", ptr);

  11.    return(0);
  12. }
数字(double)是 20.303000
字符串部分是 | This is test|

 楼主| 玛尼玛尼哄 发表于 2023-12-25 22:07 | 显示全部楼层
5049665898c8877a2e.png
经过测试该函数的字符串开头必须为数字,否则无法识别。。
 楼主| 玛尼玛尼哄 发表于 2023-12-25 22:08 | 显示全部楼层
155165898cc0bac18.png
如果转换的字符串中是整数,那么仍然会转换为小数表示形式。
海边浪漫幻象 发表于 2025-9-8 15:40 | 显示全部楼层
可利用正则表达式匹配数字模式,如 Python 的 re 模块,用 r'-?\d+.?\d*' 匹配整数、小数及负数;也可遍历字符串,判断字符是否为数字或正负号、小数点,组合成有效数字。正则更简洁,适合复杂场景;遍历可自定义规则,灵活处理特殊格式,按需选择。
51xlf 发表于 2025-9-15 23:55 | 显示全部楼层
字符串中提取数字?      
51xlf 发表于 2025-9-15 23:55 | 显示全部楼层
sscarf这个函数吧
robincotton 发表于 2025-9-16 23:57 | 显示全部楼层
利用正则表达式
bestwell 发表于 2025-9-17 00:50 | 显示全部楼层
使用标准库函数 sscanf()
sesefadou 发表于 2025-9-17 19:40 | 显示全部楼层
长字符串可结合strchr定位分隔符
earlmax 发表于 2025-9-17 21:03 | 显示全部楼层
sscanf()              
wangdezhi 发表于 2025-9-17 22:06 | 显示全部楼层
正则表达式              
updownq 发表于 2025-9-18 18:32 | 显示全部楼层
使用 atoi() 或 atof() 逐段解析
fengm 发表于 2025-9-18 20:05 | 显示全部楼层
使用strstr查找前缀位置。前缀后提取连续数字
tabmone 发表于 2025-9-18 20:38 | 显示全部楼层
可以手动逐字符解析,支持任意格式和自定义逻辑。
bartonalfred 发表于 2025-9-18 22:08 | 显示全部楼层
遍历分割              
iyoum 发表于 2025-9-19 07:41 | 显示全部楼层
sscanf 函数可以从字符串中按照指定的格式提取数据。
macpherson 发表于 2025-9-19 10:37 | 显示全部楼层
遍历字符串,定位分隔符位置。              
belindagraham 发表于 2025-9-19 11:26 | 显示全部楼层
C 标准库提供了多个字符串转数字的函数
timfordlare 发表于 2025-9-19 13:40 | 显示全部楼层
逐字符解析              
yorkbarney 发表于 2025-9-19 14:40 | 显示全部楼层
使用 sscanf 函数              
您需要登录后才可以回帖 登录 | 注册

本版积分规则

196

主题

3261

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部