2013-06-22 43 views
-3

我有一个整数说002345我希望它被分成时间= 00分钟] =使用“/”和“%”式方法23秒= 45.I尝试,但它没”因为前两项是00,所以没有其他办法可以解决。你们中的任何一个人都会给我一个代码。 谢谢分裂HHMMSS到HH毫米SS在C

+8

'给我一个代码'?是你的生日吗? – devnull

回答

0

由于您不是要求使用“/”和“%”的常规方法。 然后,您可以将整数时间转换为字符串并将小时,分钟,秒删除。

但是存储时间为简单的整数是不是一个好主意,你会错过的前导零小时。因此,最好为此使用一个char数组。

#include <stdio.h> 
#include <string.h> 

int main() 
{ 
     char hour[3]={0}; 
     char min[3]={0}; 
     char sec[3]={0}; 

     int time = 2345; 

     char timeStr[10] = {0}; 

     sprintf(timeStr, "%06d", time); 

     memcpy(hour, timeStr, 2); 
     memcpy(min, timeStr+2,2); 
     memcpy(sec, timeStr+4,2); 

     printf("%s:%s:%s",hour,min,sec); 

} 

方法,我建议是: -

#include <stdio.h> 
#include <string.h> 

int main() 
{ 
     char hour[3]={0}; 
     char min[3]={0}; 
     char sec[3]={0}; 

     char timeStr[] = "002345"; 

     memcpy(hour, timeStr, 2); 
     memcpy(min, timeStr+2,2); 
     memcpy(sec, timeStr+4,2); 

     printf("%s:%s:%s",hour,min,sec); 

} 

然后转换小时,分钟,秒到整数使用的atoi();

+0

非常感谢你的工作:) – Asif

0

假设你整数2345(因为前导零是无关紧要的),你可以使用:

hh = val/10000; 
mm = (val/100) % 100; 
ss = val % 100; 

相反,如果你有一个字符串(目前还不清楚,因为你的标签表明这一点,但有在问题主体中没有提及它),你只需在每个双字符段上调用类似atoistrtol的东西即可。

+0

前导零将使整数八进制。 –

+1

@YaoHao,只有在你的_code中有他们,_不是由用户输入。而且,如果你在你的代码中有这种方式,那就不要。使用'2345'(前面有空格,如果你想让他们排队)。如果你担心strtol将它们视为八进制数,那么不要 - 你明确指定基数。 – paxdiablo

相关问题