读书人

接着请问将例如quot;085308quot;的字符串转换成

发布时间: 2012-03-22 17:43:57 作者: rapoo

接着请教将例如"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);

读书人网 >C语言

热点推荐