"); //-->
问题:提取“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对返回值的影响。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
没有调用muxBind 就用muxSend发送数据可以吗
双执行器机器人将高效的地面滚动和旋转飞行结合在一个设计中
基于ARM的WinCE嵌入式系统开发 上
TI的600亿美元晶圆厂支出计划
AT89S52数据手册
STK461功放电路
关于车载播放终端选型问题
AT89C51数据手册
基于ARM的嵌入式Linux系统开发 上
[讨论]VXworks下如何实现对USB设备的读写?
中智科仪STC810数字延迟脉冲发生器全新升级
请教:Tonardo bootrom_uncmp后生成的最终文件是什么,怎么有那么多*.o的文件
TA7230P功放电路
WIGGLER的性能参数???
中国汽车制造商目标是2026年实现100%采用本地产芯片
实时Linux技术:如何在嵌入式LINUX中应用实时特性
特斯拉采用台积电3nm工艺2026年量产HW5芯片
AT89C52数据手册
AT89S51数据手册
英飞凌迎接新太空应用的内存市场挑战
基于ARM的WinCE嵌入式系统开发 下
TA7227P功放电路
如何通过混合信号仿真优化硅光子学
TA7222AP功放电路
英特尔宣布新任销售及工程技术领导层任命
基于ARM的嵌入式Linux系统开发 中
韦尔股份更名豪威集团,释放了什么信号?
2025年1季度中国智能眼镜市场同比增长116.1%
STK465功放电路
AT89C55数据手册