最近在做NRF51822蓝牙单片机项目,会不定期记录一些C语言和NRF51822的知识点,提醒自己。
关于如何从一段字符串中提取到感兴趣的一个或者一串,我找了2个函数,下面记录下:
例如我想从+CCID: “0123456789”中只提出数字
第一个sscanf
按照百度的 sscanf(“+CCID: \”0123456789\”“,”%[0-9]”,buf)不行
改成sscanf(“+CCID: \”0123456789\”“,”%*[^\”]\”%10s”,buf)可以了。
第二个strtok_r
char * out;
char * msk;
char * num;
msk=strtok_r(msg,”\”“,&out);
num=strtok_r(NULL,”\”“,&out);
此时就读取到了中间的数字
注意:定义字符串数组的时候要多出一位放’\0’结束符
疑问1:sscanf第一个为什么不行?
2:char数组加结束符的意义?
3我定义数组 char buf[20]和我定义char * buf 有何不同,如果没有不同那么,mencpy或着sscanf的时候不能用第二个?
待解决
第一个确实不行,可能C中的正则没那么完全
可参考此链接