실행파일 자신의 절대경로, 파일명, 확장자를 제외한 파일명 구하기


Windows 프로그램에서 실행파일 자신의 절대경로, 파일명, 확장자를 제외한 파일명 구하기입니다.

간단하게 void fnGetFileName(void); 라고 선언한 함수에 구현해 보겠습니다.
void fnGetFileName()
{
	TCHAR FullPath[260];
	TCHAR FileName[260];

	//절대경로를 얻어옵니다.
	GetModuleFileName(NULL, FullPath, 260);

	//파일명을 얻어옵니다. ex)filename.exe
	GetFileTitle(FullPath, FileName, 260);

	//아래는 확장자를 제외한 파일명 얻기입니다. (저질코드;;)
	for(int i = strlen(FileName); i > 0; i--)
	{
		if(FileName[i] == '.')
		{
			FileName[i] = 0;
		}
	}
}


HS님이 알려주신 _splitpath 방법으로 아래와 같이 구현할 수도 있겠습니다.

void fnGetFileName()
{
	TCHAR FullPath[260];
	TCHAR FileName[260];
	TCHAR BaseFileName[260];

	//절대 경로를 얻어옵니다.
	GetModuleFileName(NULL, FullPath, 260);

	//파일명을 얻어옵니다.(확장자 포함 ex - filename.exe)
	GetFileTitle(FullPath, FileName, 260);

	//확장자를 제외한 파일명 얻기입니다.
	_splitpath(FullPath, NULL, NULL, BaseFileName, NULL);
}

_splitpath()함수가 있는 줄 모르고 뻘짓을 했었네요;;; _splitpath의 함수 원형은 

void _splitpath( const char *path, char *drive, char *dir, char *fname, char *ext );입니다.

path - Full path (절대경로)
drive - Drive (드라이브)
dir - directory path (절대경로에서 드라이브와 파일명을 제외한 경로)
fname - Base filename (확장자를 제외한 파일명)
ext - filename extension (확장자)

필요없는 부분은 NULL로 주면 됩니다.

GetFileTitle을 이용하지 않고 _splitpath()를 이용하여 확장자 포함 파일명을 구해올 수도 있겠군요.




+ Recent posts