【发布时间】:2022-11-12 02:14:41
【问题描述】:
char* oledScreen::getCurrentTime(){
char* hour = malloc(16);
snprintf(hour, 16, "%d", getHour());
char* minute = malloc(16);
snprintf(minute, 16, "%d", getMinute());
char* firstPart = strcat(getHour() < 10 ? strcat("0",hour) : hour, ":");
const char* secondPart = getMinute() < 10 ? strcat("0",minute) : minute;
return strcat(firstPart, secondPart);
};
我正在尝试附加两个整数,可以使用getHour() 和getMinute() 获得。但是,我需要检查这两个中的一个是否小于 10:如果是,我需要附加一个 0,以便输出为:0X,其中X 是getHour() 或getMinute()。
我的问题是它没有附加 : 字符。例如,如果 getHour() = 9 和 getMinute() = 15。 getCurrentTime() 的输出是 0915 而不是 09:15。你知道为什么会这样吗?
【问题讨论】:
-
你也有内存泄漏,谁来
free分配给hour和minute的内存? -
snprintf(buffer, buffer_size, "%02d:%02d", getHour(), getMinute()) -
顺便说一句,您的代码不是 C,而是 C++。所以你不应该一开始就使用
char数组或snprintf。 -
@Someprogrammerdude 或 malloc...
-
strcat("0",hour)将hour中的任何内容添加到字符串文字"0"。您不能向字符串文字添加内容。应该给你一个警告:godbolt.org/z/a48x3bnYo