第133章 _strtime関数の新バージョン


_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に現在時刻をコピーします。

これを永久ループ内で繰り返します。 何かキーが押されると、ループを抜けてプログラムが終了します。

実行結果は、次のようになります。




[Index][総合Index] [Previous Chapter] [Next Chapter]

Update Sep/04/2007 By Y.Kumei
当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。