C言語 標準関数 | 応用 | サンプル
C言語では、実行しているファイル名と行番号を、__FILE__、__LINE__で知ることが出来ます。
エラーが発生した場合などに、デバッグでその位置を特定するためによく使われる方法です。
尚、Windowsの場合は、__FILE__にはフルパスになるので、_splitpath関数を使用してパスを除いたファイル名のみを取り出すことになります。
#include <stdio.h>
main() {
printf( "file(%s):line(%d)\n" , __FILE__ , __LINE__ );
}
file(test.c):line(4)
上記でも記述しましたが、WIndowsの場合、__FILE__はフルパスになってしまいます。
このフルパスからファイル名のみを取りだすには、_splitpath関数を使用すれば可能です。
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
main() {
char drv[100];/* ドライブ */
char dir[100];/* ディレクトリ */
char fname[100];/* ファイル名(エクステンション除く) */
char ext[100];/* エクステンション */
/* Windowsの場合、__FILE__はフルパスになるので
ファイル名のみを取得するには、_splitpath関数を使用する。
*/
_splitpath( __FILE__ , drv , dir , fname , ext );
printf( "file(%s%s):line(%d)\n" , fname , ext , __LINE__ );
/* _splitpath関数でdrv、dirが不要であれば
引数にNULLすれば良い。
*/
_splitpath( __FILE__ , NULL , NULL , fname , ext );
printf( "file(%s%s):line(%d)\n" , fname , ext , __LINE__ );
}
file(test1.cpp):line(16)
file(test1.cpp):line(22)