单片机sscanf函数问题

图片中的红色框起来的部分是什么意思?还有sscanf跟scanf用起来有什么区别?

头文件 #include
定义函数 int sscanf (const char *str,const char * format,........);
函数说明
sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结果存于对应的参数内。

返回值 成功则返回参数数目,失败则返回-1,错误原因存于errno中。 返回0表示失败 否则,表示正确格式化数据的个数 例如:sscanf(str,"%d%d%s", &i,&i2, &s); 如果三个变成都读入成功会返回3。 如果只读入了第一个整数到i则会返回1。证明无法从str读入第二个整数。
范例 #include
main()
{
int i;
unsigned int j;
char input[ ]=”10 0x1b aaaaaaaa bbbbbbbb”;
char s[5];
sscanf(input,”%d %x %5[a-z] %*s %f”,&i,&j,s,s);
printf(“%d %d %s ”,i,j,s);
}
执行 10 27 aaaaa

sscanf(stringBuf.c_str(), "%20[^#]#%20[^ ]",......)语句中""中的内容含义为:
“%[
]”符号用于声明字符串,它比“%s”更具体,可以用于设置读取的样式。例如“%[a-z]”只读取小写字母,读到其它字符就结束。注意,方括号中如果有“^”,代表一直读到某字符为止。例如:

“%[^#]”:读取字符串,一直到出现“#”号为止。
“%20[^#]”:读取20个字节的字符串,出现“#”号时结束。
所以,“%20[^#]#%20[^ ]”的意义就是,
读取两个20字节大小的字符串,第一个字符串可以用#结束,第二个字符串可以用回车符结束。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-18
红色部分表示读到的变量数量少于2(比如数据为12:30时可以读到2个变量,如果是12则只能读到一个变量),或者没有读到。sscanf的输入是字符串变量,而scanf的输入是控制台,对单片机来说,scanf的输入一般指串口输入。本回答被提问者采纳

单片机sscanf函数问题
红色部分表示读到的变量数量少于2(比如数据为12:30时可以读到2个变量,如果是12则只能读到一个变量),或者没有读到。sscanf的输入是字符串变量,而scanf的输入是控制台,对单片机来说,scanf的输入一般指串口输入。

单片机C语言数组,十六进制转十进制
是单片机的,不是电脑上的VC程序,楼下的又是scanf又是printf的。。。可以定义个int 变量来存储。int temp;temp = (ZFC[1] - '0')<<8+(ZFC[2] - '0')<<7+(ZFC[3] - '0')<<6+(ZFC[4] - '0')<<5+(ZFC[5] - '0')<<4;这样变换之后,temp就是十进制的62235了。也可以...

如何将单片机串口接收到的16进制字符串转化为整型数再返回给上位机...
对于数据流需要区分数字流和字符流,例如数字1,对应字符就是31。串口收发需要一个约定,例如固定长度或数据包标识,你收到数据后按照acssii表转成数字发送出去。

C51串口发送,单片机如何把收到的23.34字符,赋值给另外一个变量,为数...
我的方法比较笨:每一位字符值减去48(0x30)得到对应的整数,判断小数点在那位,用整数替代浮点数,恢复成一个变量,2x1000+3X100+3x10+4=2334

C语言sscanf语句好像有错误,不知道怎么修复
不清楚你用的什么编译器。VS2010可以正常得到输出

keil c中如何将整型转化为字符串
可以使用sscanf,就像sprintf将整型数转换成字符串输出一样,逆运算(KEILC 中scanf和printf确定了通过单片机串行口完成输入输出模式,除非做了修改,一般实际中不用)。给你个例子:unsigned char string[5]={"1234"};unsigned int n;sscanf(string,"%u",&n);\/\/string是字符串,%u是格式控制串,u是...

我用KEIL编C语言的程序,用到了一个atoi函数,但在LCD上显示不出来,如果...
我首先假设内存足够大(至少1K),不是特别差的51、31系列单片机。需求是把a142这个16进制数?转换成10进制数输出?前面 char str[4]={“a142"};是完全错误的 应当是 char str[]="a142"; 或者 char str[5]="a142";后面 最简单的就是 sscanf(str, "%x", &mmsi); \/* 取出值 *\/ char...

单片机C语言编程如何提高实时性
1. 不使用形式参数传递局部变量---函数不带参数,不返回参数 尽一切可能使用全局变量 2. 不使用库函数---特别是stdio.h字符串格式化函数 --如sscanf,scanf,printf,sprintf等 3. 变量内存分配在片内---优先考虑data,idata,pdata 4. 使用相对小的数据类型 uchar,uint float,string靠后 5. 多使用(...

51单片机] 51单片机中如何将uchar code 数组转换为uchar字符型数据_百...
uchar code TimeStr[10]="00:00:00";sprintf(TimeStr,"%02d:%02d%02d";s,f,m);如果s=9,f=12,m=4,即得到TimeStr=“09:12:14”;当然sprintf函数运行有点花时间,那就这样:TimeStr[0]=s\/16+0x30;TimeStr[1]=s%16+0x30;TimeStr[3]=f\/16+0x30;TimeStr[4]=f%16+0x30;Time...

ARDUINO 中将一个unsigned char 的数组的数据转化为一个long 型的数...
sscanf((char *)code,"%lf",&x);\/\/转换 printf("%f\\n",x);\/\/打出来看看 return 0;} 如果unsigned char code[]={2,3,3,'.',1,2,3,4,6,5}中的数字不是字符,则——include "stdio.h"\/\/ int main(void){ unsigned char code[]={'2','3','3','.','1','2','...

相似回答