揮発性のメモ2

知識をメモ書きしておく

strftime()は\0で終端するのか

結論から言って、strftime()は格納文字列長がギリギリだとバグっぽい動きをする。

http://codepad.org/Q2bKk2Yi

    time_t t;
    struct tm tm;
    char buf[] = "XXXXXXXXXXXXXXRRRR";

    printf("%s\n",buf);                        // XXXXXXXXXXXXXXRRRR

    time(&t);
    localtime_r(&t, &tm);
    strftime( buf, 15, "%Y%m%d%H%M%S ", &tm);  // 20110924080820RRRR
//  strftime( buf, 14, "%Y%m%d%H%M%S",  &tm);  // 201109240808XXRRRR
//  strftime( buf, 15, "%Y%m%d%H%M%S",  &tm);  // 20110924080820

    printf("%s\n",buf);

フォーマットの最後のスペースが必要な理由はなんだ。意味がわからん。
こんなコード、どうせライブラリの気まぐれでいつか動かなくなるだろうから使わん。