自从我上次使用 C 编程以来已经有一段时间了,但我似乎对指针和字符串感到困惑。我正在写一个 Pebble 表盘,我需要将分钟的数字分成个位和十位,并将它们放入各自的容器中。
因此,如果分钟为 25,我需要将 2 和 5 分开并将它们放入两个单独的char
变量中。
我写的代码是
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。我在这里缺少什么?如何访问 a 中的第一个字符char[]
?
作为一个临时解决方案,我所做的是声明一个 2-characterchar
并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中的十位值?