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__からファイル名のみ取り出す

上記でも記述しましたが、WIndowsの場合、__FILE__はフルパスになってしまいます。

このフルパスからファイル名のみを取りだすには、_splitpath関数を使用すれば可能です。

サンプル(__FILE__からファイル名を取り出す)

#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__からファイル名を取り出す)

file(test1.cpp):line(16)
file(test1.cpp):line(22)


Copyright © 2008-2015 http://hitorilife.com All Rights Reserved.