c - Arduino serial.print() 在实际字符后添加一个额外的字符

标签 c string buffer arduino printf

        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;
}

当我执行convert(time,interval);

串行监视器返回正确的值,但会添加一个 ' 或其他符号。

有什么想法吗?

我根据人们的说法更新了我的代码,但是我仍然遇到同样的问题?

最佳答案

您正在返回一个指向堆栈变量的指针。这是错误的。一旦函数退出,“buf”使用的堆栈空间就未定义。

关于c - Arduino serial.print() 在实际字符后添加一个额外的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4528611/

相关文章:

c - 在十六进制中搜索特定字节

c - 打印特定年份和月份的日历

javascript - 如何在 JSON 字符串中用 <br> 替换\n?

c# - 使用字符串作为 IEnumerable

android - 使用 setText(R.string.value) 和 setText(getResources().getString(R.string.value) 设置文本的优点/缺点

c - 为 char 数组分配大小时出现段错误

Swift - 如何从麦克风输入(AVAudioPCMBuffer)获取当前音量

c - C 中的结构体声明

C 函数和结构体的区别

c - C 中的字母数字字符串生成