专栏中心

EEPW首页 > 专栏 > 如何提取字符串中数字

如何提取字符串中数字

发布人:电子禅石 时间:2018-05-16 来源:工程师 发布文章

问题:提取“485:80:63”字符串中数字。

#include "stdio.h"

int main(void)
{
    char aTxBuffer[128];
    sprintf(aTxBuffer,":%d:%d:%d\n",456,80,433);
    printf("len is %d,%s\r\n",(strlen(aTxBuffer)),aTxBuffer); 
    
    
    printf("hello\r\n");

    char *p = aTxBuffer;
    int num[100];
    int i, r, v, n;
    i = 0;
    //从字符串中读取出内容
    while (1)
    {
        r = sscanf(p, "%d:%n", &v, &n);
        if (1 == r)
        {
            num[i++] = v; //4 3 3 
            p += n;
            printf("%d,%d\r\n",v,n);
        }
        else if (0 == r)
        {
            p++;
        }
        else
        {
            break;
        }
    }
    //打印读取到的内容
    for (n = 0; n < i - 1; n++)
        printf("%d ", num[n]);
    printf("%d\n", num[i - 1]);
    sscanf(p, "%d:%n", &v, &n);
    return 0;
}

其中使用到sscanf 函数。比较好的介绍如下:

http://www.jb51.net/article/90495.htm

其中:2) n:至此已读入值(未必赋值)的等价字符数,该数目必须以int类型存储。如"10,22"经过"%d%*[^0-9]%n"格式转换后,%n对应的参数值为3(虽然','未参与赋值)。

     'n'并非转换符,尽管它可用'*'抑制。C标准声称,执行%n指令并不增加函数返回的赋值次数;但其勘误表中的描述与之矛盾。建议不要假设%n对返回值的影响。


专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

双执行器机器人将高效的地面滚动和旋转飞行结合在一个设计中

基于ARM的WinCE嵌入式系统开发 上

视频 2009-10-22

TI的600亿美元晶圆厂支出计划

EDA/PCB 2025-06-19

AT89S52数据手册

AT89C51数据手册

基于ARM的嵌入式Linux系统开发 上

视频 2009-10-22

中智科仪STC810数字延迟脉冲发生器全新升级

中国汽车制造商目标是2026年实现100%采用本地产芯片

实时Linux技术:如何在嵌入式LINUX中应用实时特性

视频 2009-10-22

特斯拉采用台积电3nm工艺2026年量产HW5芯片

AT89C52数据手册

AT89S51数据手册

英飞凌迎接新太空应用的内存市场挑战

基于ARM的WinCE嵌入式系统开发 下

视频 2009-10-22

如何通过混合信号仿真优化硅光子学

英特尔宣布新任销售及工程技术领导层任命

国际视野 2025-06-19

基于ARM的嵌入式Linux系统开发 中

视频 2009-10-22

韦尔股份更名豪威集团,释放了什么信号?

2025年1季度中国智能眼镜市场同比增长116.1%

消费电子 2025-06-19

AT89C55数据手册

更多 培训课堂
更多 焦点
更多 视频

技术专区