ctime_s | Programming Place Plus C言語編 標準ライブラリのリファレンス

トップページC言語編標準ライブラリのリファレンス(名前順)

トップページC言語編標準ライブラリのリファレンス(ヘッダ別)


ctime_s関数

timer
概要 カレンダー時間を文字列化する。
ヘッダ time.h
形式
errno_t ctime_s(char* s, rsize_t maxsize, const time_t* timer);
引数 s 文字列化された結果を受け取るメモリアドレス。ヌルポインタであってはならない。
maxsize 引数s が指すバッファの大きさ。26未満および RSIZE_MAX より大きい値であってはならない。
カレンダー時間が格納された time_t型の値を指すポインタ。ヌルポインタであってはならない。
戻り値 成功したときは 0、失敗したときは 0以外
詳細

この関数がしていることは、次と同じである。

return asctime_s(s, maxsize, localtime_s(timer));


ctime関数の安全性を高めた関数である。ctime関数と違い、結果を静的なオブジェクトに生成してそのポインタを返すのではなく、呼び出し元が用意したバッファに受け取るかたちになっているため、ほかの関数との競合でデータが破損することがなくなっている。また、バッファの大きさを引数maxsize でチェックする。実行時に検出できる問題があれば実行時制約違反となる。


実行時制約違反があったとき、引数s がヌルポインタでなく、引数maxsize が 0 でなく RSIZE_MAX より大きくない場合には、s[0] にヌル文字がセットされる。


この関数は、__STDC_LIB_EXT1__ 事前定義マクロが定義されている処理系📘で使用できる。このマクロが定義されていない場合に使用できるかどうかは処理系定義である。また、この関数を使用するのなら、<time.h> をインクルードする前に、__STDC_WANT_LIB_EXT1__ という名前のマクロを、置換結果 1 になるように定義する。このマクロが 0 に置換されると、この関数は宣言・定義されない[1]
注意
使用例
#define __STDC_WANT_LIB_EXT1__ 1
#include <stdio.h>
#include <time.h>

int main(void)
{
    time_t t = time(NULL);

    char buf[26];
    ctime_s(buf, sizeof(buf), &t);
    printf("%s", buf);
}

実行結果:

Sat Dec  7 16:46:46 2024
関連

ctime関数はこの関数の元になった古い関数であるが、C23 からは非推奨となっている。

変換前の形式が tm構造体である場合は、asctime_s関数を使える。
解説章


参考リンク 🔗

本ページはアフィリエイトプログラムによる収益を得ています。
以下のリンクから商品を購入されると、Programming Place 管理者に紹介料が支払われています。


更新履歴 🔗



標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る