自從我上次使用C編程以來已經有一段時間了,但似乎我對指針和字符串感到困惑。我正在寫一個Pebble錶盤,我需要將分鐘的數字分成幾位數字和十位數字,並將它們放入各自的容器中。卵石C,在特定位置獲取字符
所以,如果分鐘是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.我在這裏錯過了什麼?如何訪問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中獲得十年的價值?
如果我刪除&,即'text_layer_set_text(s_m_ten_layer,d_minute [0]);',編譯器返回''text_layer_set_text'的傳遞參數2使得指針從整數變爲沒有轉換錯誤的指針 – Devmonster 2014-11-05 12:54:30