首页 > 解决方案 > sscanf() 的问题不会读取 char 数组中的每个 0

问题描述

我需要从我的 char 数组中提取数字,它以 hh:mm 格式存储值(例如 20:20) 我尝试使用 sscanf 函数将 hh 提取为小时变量,将 mm 提取为分钟变量。它工作得很好,直到时间类似于 0number:0number 或者如果它是 00:00 ..它只返回没有 0 或只有一个 0 的数字。当它读取第一个 0 时,它是否有可能把它当作什么否则,不是数组值的一部分?谢谢你的任何回答。

char time[15]; ///where I store the time value 
Serial.println(time); //prints nicely something like 02:02
int hour;
int minute;

sscanf(incas,"%02d:%02d",&hour,&minute); 
Serial.println(hour);  ///prints 2
Serial.println(minute); ///prints 2

标签: c++scanfarduino-ide

解决方案


问题不在于您的呼叫,sscanf而在于 to println。尝试这个:

char time[15]; ///where I store the time value 
Serial.println(time); //prints nicely something like 02:02
int hour;
int minute;

sscanf(incas,"%02d:%02d",&hour,&minute); 
char strBuf[3];
sprintf(strBuf, "%02d", hour);//hour is an int, so you need to pad with leading 0's
Serial.println(strBuf);  ///prints 2
sprintf(strBuf, "%02d", minute);
Serial.println(strBuf); ///prints 2

推荐阅读