Open In App

asctime() and asctime_s() functions in C with Examples

asctime() function

The asctime() function returns the pointer to the string that contains the information stored in the structure of the struct tm type. This function is used to return the local time defined by the system in string format. This function is defined in <time.h> header file.

Syntax

char *asctime(const struct tm* tm_ptr);

Parameters

Return Value

This function returns a pointer to a static null-terminated character string that contains the calendar time in the form “Www Mmm dd hh:mm:ss yyyy”, where:



Example

The below C program demonstrates the asctime() function.




// C program to demonstrate
// the asctime() function
 
#include <stdio.h>
#include <time.h>
 
int main()
{
    struct tm* ptr;
    time_t lt;
    lt = time(NULL);
    ptr = localtime(&ptr);
 
    // using the asctime() function
    printf("%s", asctime(ptr));
 
    return 0;
}

Output

Thu Jan  1 00:00:00 1970

asctime_s() function

This function is used to convert the given calendar time into a textual representation but unlike asctime() function, the asctime_s() function require the user to provide a string buffer to store the formatted time string.

We can’t modify the output calendar time in asctime() function whereas we can modify the calendar time in asctime_s() function. The general representation of asctime_s is “Www Mmm dd hh:mm:ss yyyy“.

Syntax

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

Parameters

Return Value

Note: In some C-compilers asctime_s() won’t be supported. We can use strftime() function instead of asctime_s() function.

Example

The below C program demonstrates the asctime_s() function in C.




// __STDC_WANT_LIB_EXT1__ is a User defined
// standard to get astime_s() function to work
#define __STDC_WANT_LIB_EXT1__ 1
 
#include <stdio.h>
#include <time.h>
 
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
}

Output
Sun Jun  4 17:25:35 2023

Conclusion

asctime() function returns a pointer to a static buffer that contains the date and time in the textual format whereas asctime_s() function require the user to provide the buffer to store the time converted in string format and it returns an error code which is an integer value that represent the final status of the operation.


Article Tags :