【发布时间】:2010-12-24 22:50:47
【问题描述】:
char *feedtime = "0:0";
String interval = "6";
char* convert(char* x, String y){
int hour;
int minute;
sscanf(x, "%d:%d", &hour, &minute);
char buf[5];
if (y == "6"){
if (hour > 17){
hour = (hour+6)%24;
snprintf(buf, 5, "%d%s", hour, ":0");
}
if (hour < 18){
hour = hour + 6;
snprintf(buf, 5, "%d%s", hour, ":0\0");
}
}
buf [5] = '\0';
return buf;
}
当我执行转换时(时间,间隔);
串行监视器返回正确的值,但会添加一个 ' 或其他符号。
有什么想法吗?
我根据人们所说的更新了我的代码,但我仍然遇到同样的问题?
【问题讨论】:
-
您没有解决 jcopenha 答案中的问题。如果您向我们展示调用 convert() 并使用结果的代码,这将有助于我们更具建设性。
-
你需要一些常量——摆脱幻数。具体来说,如果您将缓冲区声明为 5 个字节,这意味着您可以寻址 0-4。
buf[5] = '\0'正在写入不属于你的内存。
标签: c string buffer arduino printf