Arduino serial.print () добавляет дополнительный символ после фактического символа - PullRequest
1 голос
/ 25 декабря 2010
        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;
}

Когда я выполняю преобразование (время, интервал);

последовательный монитор возвращает правильное значение, но добавляет к нему символ 'или другой символ.

Есть идеи почему?

Я обновил свой код, исходя из того, что говорили люди, однако я все еще получаю ту же проблему?

Ответы [ 3 ]

3 голосов
/ 25 декабря 2010

Вы возвращаете указатель на переменную стека.Это не верно.Как только функция выходит из стекового пространства, используемого buf, не определено

0 голосов
/ 25 декабря 2010

Ваши строки не определены должным образом.Увеличьте размер буф.

0 голосов
/ 25 декабря 2010

Вам нужен дополнительный символ в вашем буфере.У вас есть только 4-х символьный массив, но вам нужно 5 символов (2 для часа, 2 для: 0 и 1 для конечного 0).Вам также нужно завершить строку нулем, когда вы закончите.

и то, что говорит jcopenha.

...