首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

接着请问将例如"085308"的字符串转换成时间格式"16:53:08"字符串的有关问题

2012-03-22 
接着请教将例如085308的字符串转换成时间格式16:53:08字符串的问题.这是昨天提问过的问题:字符串 085

接着请教将例如"085308"的字符串转换成时间格式"16:53:08"字符串的问题.
这是昨天提问过的问题:
字符串 "085308.109 ",表示格林威治时间8点53分8.109秒,现转成北京时间格式的字符串 "16:53:08 ",C语言应该怎么处理?

这是gfxiang(afu)给出的解答:
#include   <stdio.h>
int   main()
{
char   str[]   =   "085308 ";
int   h,   m,   s;
sscanf(str,   "%2d%2d%2d ",   &h,   &m,   &s);
h   +=   8;
if   (h> =24)   h   -=   24;
printf( "%02d:%02d:%02d\n ",   h,   m,   s);
return   0;
}

问题是我需要的是将换算好的的h,m,s以 "hh:mm:ss "的格式重新组成一个字符串(不需要输出),不能用printf.
也许是很简单的问题,但我需要大家的帮助,谢谢.

[解决办法]
char buf[20]={0};
int h=1,m=10,s=4;
sprintf(buf, "%02d:%02d:%02d\n ", h, m, s);
printf( "%s ",buf);
[解决办法]
用麻烦点方法吧:

char str[] = "085308 ";
char str_result[20] ={0} ;
char temp_buff[3] = {0} ;
int h = 0 ;
temp_buff = memcpy(temp_var,str,2);
h = atoi(temp_buff);
h += 8;
if (h> =24)
{
h -= 24;
}
memset(temp_buff,0,3);
_itoa(h,temp_buff,10);
if(strlen(temp_buff)==1)
{
strcat(str_result, "0 ");
}
strcat(str_result,temp_buff);
strcat(str_result, ": ");
memcpy(str_result+3,(str+2),2);
strcat(str_result, ": ");
memcpy(str_result+6,(str+4),2);

热点排行