我正在寫一個函數來輸出一個基本小時數&分鐘的字符串,其格式爲包含小時和分鐘的兩個全局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'字符。 –