zoukankan      html  css  js  c++  java
  • localtime_s()及asctime_s使用中遇到的结构体与指针的问题

    今天在写数据结构时需要用到一个获取时间的函数,这个函数的参数传递费了我老半天时间;最终发现是一个结构体指针上的问题。

    struct tm {
       int tm_sec;         /* 秒,范围从 0 到 59                */
       int tm_min;         /* 分,范围从 0 到 59                */
       int tm_hour;        /* 小时,范围从 0 到 23 */
       int tm_mday;        /* 一月中的第几天,范围从 1 到 31                    */
       int tm_mon;         /* 月份,范围从 0 到 11                */
       int tm_year;        /* 自 1900 起的年数                */
       int tm_wday;        /* 一周中的第几天,范围从 0 到 6                */
       int tm_yday;        /* 一年中的第几天,范围从 0 到 365 */
       int tm_isdst;       /* 夏令时                        */   
    };//这是tm的结构体

    /*以下定义的是结构体指针,另一个直接定义结构体,两者进行对比。*/

    #include<time.h>
    #include<stdio.h>
    #include<stdlib.h>
    int main(void) {
     time_t now;
     char S[32];
     struct tm* timeinfo= (tm*)malloc(sizeof(tm));/*结构体指针timeinfo必须初始化,给他分配一个动态空间,这是关键点,一定要动态分配空间不然会报错(使用未初始化的内存(timeinfo)*/
     
     
     time(&now);//time()函数是把一个正整数放进t所在的地址里,这个正整数是1970年1月1日00:00:00(UTC)开始,到目前为止经过的秒数。此处便是放进now中
     localtime_s(timeinfo,&now);/*使用localtime函数把秒数时间now转换为本地时间以tm结构体保存,并把tm结构体地址储存到timeinfo当中

    这个函数中的timeinfo为指针*/
     asctime_s(S, timeinfo);/*S为之前定义的字符串数组,用于存访asctime函数将tm结构体中储存的时间转换的字符串*/
     printf("当前日期为: %s",S);
     return 0;
    }

    ————————————————————————华丽分割线来一波————————

    int main(void) {
     time_t now;
     char S[32];
     struct tm timeinfo ;//此处和上面的不同之处就是直接定义了结构体而不是指针,系统会默认初始化
     time(&now);
     localtime_s(&timeinfo,&now);//括号里的timeinfo必须加取值符
     asctime_s(S, &timeinfo);//这里也是加取值符
     printf("当前日期为: %s",S);
     return 0;
    }
  • 相关阅读:
    wget: command not found
    小程序循环多个picker选择器,实现动态增、减
    小程序 picker 多列选择器 数据动态获取
    有关https有的网站可以访问有的访问不了的问题
    微信小程序填坑之路
    linux如何搭建sftp服务器
    微信小程序模板中使用循环
    C#学习笔记(20)——使用IComparer(自己写的)
    C#学习笔记(19)——使用IComparer(百度文库)
    C#学习笔记(18)——C#构造函数中this和base的使用
  • 原文地址:https://www.cnblogs.com/ArnoldSchwarzenegger/p/11908229.html
Copyright © 2011-2022 走看看