-3

我有一个整数说 002345 我希望它被分成 Hours=00 Mins=23 Sec=45。我尝试使用“/”和“%”公式方法但它没有成功,因为前两项是 00还有其他方法。你们中的任何人都可以给我一个代码吗?谢谢你

4

2 回答 2

0

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

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

相反,如果您有一个字符串(不清楚,因为您的标签表明了这一点,但问题正文中没有提及它),您只需在每个两字符段上调用类似atoior的内容。strtol

于 2013-06-22T07:27:32.280 回答
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() 将小时、分钟、秒转换为整数;

于 2013-06-22T07:40:32.350 回答