時間と分を含む 2 つのグローバル int から基本的な時間と分の文字列を 24 時間形式で出力する関数を作成しています。
初期化中にこれらを定義しました:
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;
}
グローバル変数は、それらの値が取得される別のデバイスへのシリアル通信が追加されたときに置き換えられるスタブです。
関数を呼び出すと、文字ポインターに次の 16 進値が生成されます。
0x20 0x4b 0x00
getAlarmTime()
関数の最初の 2 行を次のように置き換えると、
int hours = 7;
int minutes = 0;
出力は、私が期待するものです。
07:00\0
これらのグローバル変数を使用すると、出力が不安定になるのはgetAlarmTime()
なぜですか?