パス名フィールドの文字列を受け取る為の領域って、定義されている数値にプラス1
しないとならなんでは?
っと思うのですが・・・
フルパス文字列を受け取る為の領域を宣言するとしたら↓みたく。
char path_buffer[_MAX_PATH]

それで、パス名フィールドに関してMSの説明は以下の通り
http://www.microsoft.com/japan/developer/library/vccore/_crt_path_field_limits.htm
文字列長とは書いて無いし(フィールド長と書いてある)、_MAX_DRIVEが3だからやっぱ文字列
込みなのかな・・・考え過ぎ???



VC++ヘルプの_splitpathのプログラム例には↓の様に書いてあるんだよねぇ〜

char path_buffer[_MAX_PATH];
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT];

_makepath( path_buffer, "c", "\\sample\\crt\\", "makepath", "c" );