第135章 _makepath関数の新バージョン


_makepath関数は、ドライブ名、ディレクトリパス、ファイル名、拡張子から絶対パスを作成する関数ですが、これのセキュリティ強化バージョンが_makepath_s関数です。



VS2005以降でないと使用できません。

stdlib.hをインクルードする必要があります。

errno_t _makepath_s(
   char *path,
   size_t sizeInCharacters,
   const char *drive,
   const char *dir,
   const char *fname,
   const char *ext 
);
pathは、完全パス名を格納するバッファです。
sizeInCharactersは、バッファサイズ(文字数)を指定します。
driveは、ドライブ名、
dirは、ディレクトリパス、
fnameは、ファイル名、
extは、拡張子です。

では、簡単なサンプルを見てみましょう。

/* makepath01.c */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
	char path[_MAX_PATH], drv[_MAX_DRIVE], dir[_MAX_DIR], filename[_MAX_FNAME],
		ext[_MAX_DRIVE];

	strcpy_s(drv, _MAX_DRIVE, "d");
	strcpy_s(dir, _MAX_DIR, "\\abc\\def\\");
	strcpy_s(filename, _MAX_FNAME, "makepath");
	strcpy_s(ext, _MAX_EXT, "c");
	
	_makepath_s(path, _MAX_PATH, drv, dir, filename, ext);

	printf("fullpath : %s\n", path);
	return 0;
}
strcpy_s関数を使っているので、string.hをインクルードする必要があります。

ディレクトリパスを指定するときC言語では「\」は「\\」となる点に注意してください。

_MAX_PATHなどの定数はstdlib.hで次のように定義されています。

#define _MAX_PATH   260 /* max. length of full pathname */
#define _MAX_DRIVE  3   /* max. length of drive component */
#define _MAX_DIR    256 /* max. length of path component */
#define _MAX_FNAME  256 /* max. length of file name component */
#define _MAX_EXT    256 /* max. length of extension component */
では、実行結果を見てみましょう。

今回も簡単でしたね。




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

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