2012-02-08 25 views
-1

如何從字符串「DDMMYYHHMMSS」中獲取前兩個字節並填寫以下結構。C編程字符串

mytime.tm_sec = SS; // Seconds  (0-59) 
mytime.tm_min = MM; // Minutes  (0-59) 
mytime.tm_hour = HH; // Hours  (0-23) 
mytime.tm_mday = YY; // Day of Month (1-31) 
mytime.tm_mon = MM; // Month  (0-11) 
mytime.tm_year = DD; // Year   (no. of years since 1900) 
+1

這是功課嗎? – stanigator 2012-02-08 06:20:44

+0

前兩個字節?這意味着只有'DD'。那真的是你想要的嗎?如果是這樣,你想要承擔當前的月份,年份等嗎?您可以使用'localtime'進行初始化,然後使用您想要更改的部分進行覆蓋。 – Mikel 2012-02-08 06:22:08

+0

@stanigator不,它不是 – 2012-02-08 06:24:12

回答

1

我假設這是,所以我不會給你完整的答案。

讓我們把這個問題分成幾個比特。

1)給定一個字符串,你知道如何提取一個子字符串? 例如,你能弄清楚如何做到這一點:

char sample[] = "DDMMYYHHMMSS"; 
char *dd; 
// code you need to figure out 
printf("%s", dd); // should print 「DD」 

提示:查一查strncpy()

2)一旦你知道了,你知道如何將一串數字轉換爲數字嗎? 例如,你可以做到這一點:

char dd[] = "32"; 
int mday; 
// code you need to figure out 
printf("%d", mday); // should print 「32」 

提示:查一查sscanf() & atoi()

在這一點上,結合這兩種技術應該是直截了當的。通過一切手段問更多,如果你需要更多的幫助。

3

可能是我不;噸理解的問題,但你爲什麼不能做到以下幾點:

assert(strlen(timestring) == 12); 

char ss[3]; 
strncpy(ss, &timestring[10], 2); 
mytime.tm_sec = atoi(ss); 

// same for others 

UPD:沒有,就此打住吧。我忘了strptime(檢查手冊頁)。它應該幫助你

1

在C中,一個char是一個字節,而一個字符串是一個數組char s。您需要採用指數爲0和1的char。然後,如果需要,可以將該值轉換爲int