📜  带有示例的C中的asctime()和asctime_s()函数

📅  最后修改于: 2021-05-25 20:23:09             🧑  作者: Mango

asctime()函数:
asctime()函数在time.h头文件中定义。此函数将指针返回到包含包含存储在指向struct tm类型的结构中的信息的字符串。此函数用于返回系统定义的本地时间。

句法:

char *asctime(const struct tm* tm_ptr);

0参数:该函数接受单个参数time_ptr,即指向要转换的tm对象的指针。

返回类型:该函数以“ Www Mmm dd hh:mm:ss yyyy ”的形式返回日历时间,其中:

  • Www :代表以三个字母缩写的日期(星期一,星期二,星期三,。)
  • :代表三个字母abbrivated月(一月,二月,三月..)
  • dd :用两位数字表示日期(01,02,10,21,31 ..,)
  • hh :表示小时(11、12、13、22…,)
  • mm :代表分钟(10、11、12、45…,)
  • ss :代表秒(10、20、30…,)
  • yyyy :以四位数字表示年份(2000、2001、2019、2020…,)

下面的程序演示了C中的asctime()函数:

// C program to demonstrate
// the asctime() function
  
#include 
#include 
  
int main()
{
    struct tm* ptr;
    time_t lt;
    lt = time(NULL);
    ptr = localtime(<);
  
    // using the asctime() function
    printf("%s", asctime(ptr));
  
    return 0;
}
输出:
Wed Aug 14 04:21:25 2019

asctime_s()函数:

此函数用于将给定的日历时间转换为文本表示形式。我们不能在asctime()函数修改输出日历时间,而可以在asctime_s()函数修改日历时间。 asctime_s的一般语法是“ Www Mmm dd hh:mm:ss yyyy ”。

句法:

errno_t asctime_s(char *buf, rsize_t bufsz, 
                  const struct tm *time_ptr)

参数:该函数接受三个参数:

  • time_ptr :指向指定打印时间的tm对象的指针
  • buf :指向用户提供的缓冲区的指针,长度至少为26个字节
  • bufsz :用户提供的缓冲区的大小

返回值:该函数返回指针一个静态的空值终止保留日期和时间的文字表述。原始日历时间将从asctime()函数。

注意:在某些C编译器中,将不支持asctime_s()。我们可以使用strftime()函数代替asctime_s()函数。

下面的程序研究C语言中的asctime_s()函数:

// __STDC_WANT_LIB_EXT1__ is a User defined
// standard to get astime_s() function to work
#define __STDC_WANT_LIB_EXT1__ 1
  
#include 
#include 
  
int main(void)
{
    struct tm tm
        = *localtime(&(time_t){ time(NULL) });
    printf("%s", asctime(&tm));
  
// Calling C-standard to execute
// asctime_s() function
#ifdef __STDC_LIB_EXT1__
  
    char str[50];
  
    // Using the asctime_s() function
    asctime_s(str, sizeof str, &tm);
  
    // Print the current time
    // using the asctime_s() function
    printf("%s", str);
#endif
}
输出:
Wed Aug 14 04:33:54 2019

参考: https //en.cppreference.com/w/c/chrono/asctime

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。