我正在写一个函数来输出一个基本小时数&分钟的字符串,其格式为包含小时和分钟的两个全局int。从字符串构建函数打印输出不返回预期结果
我在初始化过程中定义了这些:
int g_alarmHours = 7;
int g_alarmMinutes = 0;
返回字符串的函数是:
char* getAlarmTime() {
int hours = g_alarmHours;
int minutes = g_alarmMinutes;
char t[6];
t[0] = (hours/10) + '0';
t[1] = (hours%10) + '0';
t[2] = ':';
t[3] = (minutes/10) + '0';
t[4] = (minutes%10) + '0';
t[5] = 0;
return t;
}
全局变量存根时添加的串行通信到另一台设备将被替换那些值将从中检索。
0x20 0x4b 0x00
当我用下面
int hours = 7;
int minutes = 0;
取代getAlarmTime()
函数的顶部两行输出然后什么:
调用函数处的字符指针生成以下的十六进制值我期望的:
07:00\0
为什么使用那些globa l变量导致getAlarmTime()
的输出变得如此诡异?
出于好奇心't [5] = 0;'是什么意思? –
@Rohit将空字符分配给最后一个数组元素 – mathematician1975
Isnt''\ 0'' null'字符。 –