注册 登录
编程论坛 C语言论坛

输出系统的日期与时间,一个是不兼容,一个是无法分配,求解答

何以为孤 发布于 2017-11-24 16:15, 1792 次点击
/*
    2017.11.24.   15:15
                  实现的功能是:输出系统的时间和日期
    需要解决的问题:
    1, 需要不断的保持程序运行,等待用户输入指令。防止main函数结束。
    2. 获取系统的日期与时间。
    解决方式:
    1, 可以使用一个无限循环语句来实现目的,在循环语句里等待用户输入,
        如果用户输入3,则终止循环,结束应用程序。
    2, 使用时间函数time和localtime函数来获取系统的日期与时间。
*/

#include<stdio.h>
#include<time.h>
int main()
{
    char a[4] = { 0, 1, 2, 3 };
    int b;
    struct tm * sysTime;  //通过struct tm结构来实现获取系统时间
    printf("如需帮助请输入0!\n");
    printf("请输入命令符:\n");

    while (1)
    {
        scanf_s("%d", &b);
        //判断用于输入的字符
        if (a[0] == b)
        {
            //输出帮助信息
            printf("输入数字1显示系统日期,输入数字2显示系统时间,输入数字3退出系统\n");
        }
        else if (a[1] = b)
        {
            time_t nowTime;
            time(&nowTime);        //获取系统日期
            sysTime = localtime_s(&nowTime);   //转化为系统日期
            printf("系统时间:%d-%d-%d\n", 1907 + sysTime -> tm_year, sysTime->tm_mon + 1, sysTime->tm_mday);   //输出信息
        }
        else if (a[2] == b)
        {
            time_t nowTime;    //获取系统时间
            time(&nowTime);    //转化系统时间
            sysTime = localtime_s(&nowTime);
            printf("系统时间:%d:%d:%d \n", sysTime->tm_hour, sysTime->tm_min, sysTime->tm_sec);
        }
        else if (a[3] == b)
        {
            return 0;
        }
        printf("请输入命令符;\n");
    }

    getchar();
    return 0;
}
只有本站会员才能查看附件,请 登录
8 回复
#2
grmmylbs2017-11-24 16:22
程序代码:
#include<stdio.h>
#include<time.h>
int main()
{
    char a[4] = { 0, 1, 2, 3 };
    int b;
    struct tm * sysTime = malloc(sizeof(struct tm));  //通过struct tm结构来实现获取系统时间
    printf("如需帮助请输入0!\n");
    printf("请输入命令符:\n");

    while (1)
    {
        scanf_s("%d", &b);
        //判断用于输入的字符
        if (a[0] == b)
        {
            //输出帮助信息
            printf("输入数字1显示系统日期,输入数字2显示系统时间,输入数字3退出系统\n");
        }
        else if (a[1] == b)
        {
            time_t nowTime;
            time(&nowTime);        //获取系统日期
            localtime_s(sysTime,&nowTime);   //转化为系统日期
            printf("系统时间:%d-%d-%d\n", 1907 + sysTime->tm_year, sysTime->tm_mon + 1, sysTime->tm_mday);   //输出信息
        }
        else if (a[2] == b)
        {
            time_t nowTime;    //获取系统时间
            time(&nowTime);    //转化系统时间
            localtime_s(sysTime, &nowTime);
            printf("系统时间:%d:%d:%d \n", sysTime->tm_hour, sysTime->tm_min, sysTime->tm_sec);
        }
        else if (a[3] == b)
        {
            return 0;
        }
        printf("请输入命令符;\n");
    }

    getchar();
    return 0;
}
#3
何以为孤2017-11-24 16:45
回复 2楼 grmmylbs
只有本站会员才能查看附件,请 登录


我加了个头文件还是不行。。。。void的类型值不能用于初始化tm的类型实体

[此贴子已经被作者于2017-11-24 16:56编辑过]

#4
grmmylbs2017-11-24 16:51
为啥用CPP格式?
#5
何以为孤2017-11-24 16:53
回复 4楼 grmmylbs
我用的是vs2013  有c++和c#  没c

[此贴子已经被作者于2017-11-24 16:55编辑过]

#6
吹水佬2017-11-24 16:58
#include<stdio.h>
#include<time.h>
int main()
{
    int b;
    struct tm *sysTime;
    printf("输入数字1显示系统日期,输入数字2显示系统时间,输入数字3退出系统\n");
    while (1)
    {
        time_t nowTime = time(NULL);
        sysTime = localtime(&nowTime);
        scanf_s("%d", &b);
        if (b==1)
            printf("系统时间:%d-%d-%d\n", 1900+sysTime->tm_year, sysTime->tm_mon+1, sysTime->tm_mday);
        else if (b==2)
            printf("系统时间:%d:%d:%d \n", sysTime->tm_hour, sysTime->tm_min, sysTime->tm_sec);
        else if (b==3)
            break;
    }
    return 0;
}
#7
何以为孤2017-11-24 17:07
回复 6楼 吹水佬
只有本站会员才能查看附件,请 登录


  都在localtime这有问题,用localtime_s问题更多
#8
grmmylbs2017-11-24 17:08
文件名改成.c就行
#9
何以为孤2017-11-24 17:16
回复 8楼 grmmylbs
谢谢   长知识了
1