Вы возвращаете выделенную в стеке переменную time
из timecompare()
.Это недопустимо, поскольку выделенная в стеке память действительна только в функции, в которой объявлена переменная.
Вместо этого вам нужно вернуть выделенную кучу строку.Ваш компилятор должен предупреждать вас об этом.Вы могли бы написать это так:
char* timecompare(){
char* time = malloc(8);
snprintf(time,8,"%i:%02i",hour(),minute());
return time;
}
Не забудьте free()
память после того, как вы закончили с ним.