2012-02-08 47 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