最後に C を使用してプログラミングしてからしばらく経ちましたが、ポインタと文字列を混同しているようです。Pebble ウォッチフェイスを書いています。分の桁を 1 の桁と 10 の桁に分けて、それぞれのコンテナに入れる必要があります。
char
したがって、分が 25 の場合、2 と 5 を分離して、2 つの別々の変数に入れる必要があります。
私が書いたコードは
static void update_time() {
time_t temp = time(NULL);
struct tm *tick_time = localtime(&temp);
static char d_minute[] = "00";
if (clock_is_24h_style() == true) {
strftime(d_minute, sizeof("00"), "%M", tick_time);
} else {
strftime(d_minute, sizeof("00"), "%M", tick_time);
}
text_layer_set_text(s_m_one_layer, &d_minute[1]); // ones' place for 2[5]
text_layer_set_text(s_m_ten_layer, &d_minute[0]); // tens' place for [2]5
}
は&d_minute[1]
正しく 5 を返します。ただし、&d_minute[0]
文字列全体 25 を返します。ここで何が欠けていますか? の最初の文字にアクセスするにはどうすればよいchar[]
ですか?
暫定的な解決策として、私が行ったことは、2 文字を宣言しchar
、strncpy
&d_minute[0]
最初の文字だけを強制的にコピーすることでした。
static char min_ten[] = " ";
.....
strncpy(min_ten, &d_minute[0], 1);
....
text_layer_set_text(s_m_ten_layer, min_ten);
コードの匂いだと思います。Cで十の値を取得するにはどうすればよいですか?