結論から言って、strftime()は格納文字列長がギリギリだとバグっぽい動きをする。
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);
フォーマットの最後のスペースが必要な理由はなんだ。意味がわからん。
こんなコード、どうせライブラリの気まぐれでいつか動かなくなるだろうから使わん。