_strtime関数のセキュリティ強化バージョンに_strtime_s関数というのが
あります。VS2005以降でないと使用できません。
errno_t _strtime_s( char *buffer, size_t sizeInBytes );bufferに、現在時刻が出力されます。
sizeInBytesは、bufferのサイズです。
/* strtime01.c */
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <windows.h>
int main()
{
char szMytime[16], szOldtime[16] = "";
COORD cPos;
HANDLE hOut;
cPos.X = 2;
cPos.Y = 2;
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
while (!_kbhit()) {
SetConsoleCursorPosition(hOut, cPos);
_strtime_s(szMytime, sizeof(szMytime));
if (strcmp(szOldtime, szMytime) != 0) {
printf("%s\n", szMytime);
strcpy_s(szOldtime, sizeof(szOldtime), szMytime);
}
}
return 0;
}
コンソール・アプリケーションでカーソル位置を指定するには、SetConsoleCursorPosition関数を使います。これは、すでに第59章でやりました。このプログラムでは、_strtime_s関数でszMytimeに現在時刻を取得します。次にszOldtimeと比較し、異なればszMytimeを指定の位置に表示します。そして、szOldtimeに現在時刻をコピーします。
これを永久ループ内で繰り返します。 何かキーが押されると、ループを抜けてプログラムが終了します。
実行結果は、次のようになります。
Update Sep/04/2007 By Y.Kumei