Giriş
İmzası şöyle
Bu metodlar static bellek alanı döndüğü için multithreaded ortamlarda kullanılmamalı. Açıklaması şöyle.
Metodun için şun benzer.
C11
Bu metodlar yerine C11 ile eklenen ctime_s() ve asctime_s() kullanılmalı. İmzaları şöyle.
Eğer POSIX veya Linux kullanıyorsak ve C11 yoksa asctime_r() ve ctime_r() kullanılabilir.
İmzaları şöyle.
İmzası şöyle
char* asctime (const struct tm * timeptr);
Bu metod verilen struct tm yapısını yerel saat diliminde string'e çevirir. Metodun çıktısı sabit bir format kullanır.
Format
Bu format şöyledir.
Www Mmm dd hh:mm:ss yyyy (Baştaki Www haftanın hangi günü olduğunu belirtir.)
Çıktısı aşağıdakine benzer.Wed Feb 13 15:46:11 2013
Static BellekBu metodlar static bellek alanı döndüğü için multithreaded ortamlarda kullanılmamalı. Açıklaması şöyle.
The specification of the ctime and asctime functions goes back to C89, and things were done a bit different back in those days, mainly because multi-processor systems weren't very common and thus using a static buffer wouldn't cause a big problem.Örnek
Metodun için şun benzer.
char *asctime(const struct tm *timeptr)
{
static const char wday_name[7][3] = {
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
};
static const char mon_name[12][3] = {
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
};
static char result[26];
sprintf(result,
"%.3s %.3s%3d %.2d:%.2d:%.2d %d\n",
wday_name[timeptr->tm_wday],
mon_name[timeptr->tm_mon],
timeptr->tm_mday, timeptr->tm_hour,
timeptr->tm_min, timeptr->tm_sec,
1900 + timeptr->tm_year);
return result;
}
C11
Bu metodlar yerine C11 ile eklenen ctime_s() ve asctime_s() kullanılmalı. İmzaları şöyle.
errno_t ctime_s(char *buffer, rsize_t bufsz, const time_t *time);
errno_t asctime_s(char *buf, rsize_t bufsz, const struct tm *time_ptr);
POSIXEğer POSIX veya Linux kullanıyorsak ve C11 yoksa asctime_r() ve ctime_r() kullanılabilir.
İmzaları şöyle.
char *asctime_r(const struct tm *tm, char *buf);
char *ctime_r(const time_t *timep, char *buf);
Hiç yorum yok:
Yorum Gönder