| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 365 人关注过本帖
标题:c语言题目 获得任意一天的字符串表示
只看楼主 加入收藏
widon1104
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-3-9
结帖率:100%
收藏
 问题点数:0 回复次数:1 
c语言题目 获得任意一天的字符串表示
struct test
{
     date_time[100];
     date[100];
     time[100];
}test;

int get_time()
{
    printf("\nget_time\n");
    time_t timep;
    struct tm* p;
    time( &timep );
    p = gmtime( &timep );
    sprintf(test.date_time, "%04d%02d%02d%02d%02d%02d", (1900 + p->tm_year),
            (1 + p->tm_mon), (p->tm_mday), p->tm_hour, p->tm_min, p->tm_sec );
    memcpy(test.date, test.date_time, 8);
    memcpy(test.time, test.date_time + 8, 6);
    printf("test.date_time: %s\n", test.date_time);
    return 0;
}
// 返回当前日期+1的字符串表示
// 比如当前日期是20110531 返回20110601
int date_add1()
{
}

// 返回当前日期-1的字符串表示
// 比如当前日期是20110501 返回20110430
int date_sub1()
{
}
搜索更多相关主题的帖子: 字符串 c语言 test 
2011-05-09 10:41
widon1104
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-3-9
收藏
得分:0 
int date_add(int n, char *date_time)
{
    char tmp[10] = {0};
    int month_all[13];
    int i;
    int year, month, day;
    // 闰年
    int month_r[13] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    // 平年
    int month_p[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

    if (strlen(date_time) != 8)
        return -1;
    memcpy(tmp, date_time, 4);
    year = atoi(tmp);
    memset(tmp, 0x00, sizeof(tmp));
    memcpy(tmp, date_time + 4, 2);
    month = atoi(tmp);
    memset(tmp, 0x00, sizeof(tmp));
    memcpy(tmp, date_time + 6, 2);
    day = atoi(tmp);
    printf("year: %d month: %d day: %d\n", year, month, day);
    if (((year % 4) == 0 && (year % 100) != 0) || (year % 400) == 0) // 闰年
    {
        printf("闰年!\n");
        for (i = 0; i < 13; i++)
            month_all[i] = month_r[i];
    }
    else //平年
    {
        for (i = 0; i < 13; i++)
            month_all[i] = month_p[i];
    }
    day += n;
    while (day > month_all[month])
    {
        day -= month_all[month];
        month++;
        while (month > 12)
        {
            month -= 12;
            year++;
            if (((year % 4) == 0 && (year % 100) != 0) || (year % 400) == 0) // 闰年
            {
                printf("闰年!\n");
                for (i = 0; i < 13; i++)
                    month_all[i] = month_r[i];
            }
            else //平年
            {
                for (i = 0; i < 13; i++)
                    month_all[i] = month_p[i];
            }
        }
    }
    memset(date_time, 0x00, strlen(date_time));
    sprintf(date_time, "%04d%02d%02d", year, month, day);
    return 0;
}

int date_sub(int n, char *date_time)
{
    char tmp[10] = {0};
    int month_all[13];
    int i;
    int year, month, day;
    // 闰年
    int month_r[13] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    // 平年
    int month_p[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

    if (strlen(date_time) != 8)
        return -1;
    memcpy(tmp, date_time, 4);
    year = atoi(tmp);
    memset(tmp, 0x00, sizeof(tmp));
    memcpy(tmp, date_time + 4, 2);
    month = atoi(tmp);
    memset(tmp, 0x00, sizeof(tmp));
    memcpy(tmp, date_time + 6, 2);
    day = atoi(tmp);
    printf("year: %d month: %d day: %d\n", year, month, day);
    if (((year % 4) == 0 && (year % 100) != 0) || (year % 400) == 0) // 闰年
    {
        printf("闰年!\n");
        for (i = 0; i < 13; i++)
            month_all[i] = month_r[i];
    }
    else //平年
    {
        for (i = 0; i < 13; i++)
            month_all[i] = month_p[i];
    }
    day -= n;
    while (day <= 0)
    {
        month--;
        while (month <= 0)
        {
            month = 12 + month;
            year--;
            if (((year % 4) == 0 && (year % 100) != 0) || (year % 400) == 0) // 闰年
            {
                printf("闰年!\n");
                for (i = 0; i < 13; i++)
                    month_all[i] = month_r[i];
            }
            else //平年
            {
                for (i = 0; i < 13; i++)
                    month_all[i] = month_p[i];
            }
        }
        day = day + month_all[month];
    }
    memset(date_time, 0x00, strlen(date_time));
    sprintf(date_time, "%04d%02d%02d", year, month, day);
    return 0;
}
写了2个增加n天的函数,不知道对不对啊

[ 本帖最后由 widon1104 于 2011-5-9 14:02 编辑 ]
2011-05-09 13:55
快速回复:c语言题目 获得任意一天的字符串表示
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017369 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved