[질문] path에서 filename만 뽑아내서 출력해주는 코드
글쓴이: chonan / 작성시간: 월, 2004/11/08 - 7:46오후
debugging 을 위한 code 작업을 하고 있는 중입니다.
제가 봉착한 문제는,
파일 이름에 대한 정보도 debug line에 출력해주고 싶은데..
__FILE__을 이용하니 path까지 나옵니다.
때론, 줄이 길어져서 한 줄을 넘기곤하구요.
그래서 path에서 filename만 뽑아내고 싶습니다.
=======================================
#include <stdio.h>
#include <string.h>
#define DELIMITERS "/"
char *getFilenamewoPath(void);
int
main(void)
{
printf("filename = %s", getFilenamewoPath());
return 0;
}
char *getFilenamewoPath(void)
{
char *filenamewPath, *filenamewoPath, *tempPtr = NULL;
strcpy(filenamewPath, __FILE__);
filenamewoPath = tempPtr;
tempPtr = strtok(filenamewPath, DELIMITERS);
while (tempPtr != NULL) {
filenamewoPath = tempPtr;
tempPtr = strtok(NULL, DELIMITERS);
};
if (filenamewoPath != NULL) return filenamewoPath;
else
{
strcpy(filenamewoPath, "no file");
return filenamewoPath;
}
}
=======================================
segmentation fault를 내면서 죽는데, 이유를 모르겠습니다. ㅠ.ㅠ
고수님들.. 도와주세요!
Forums:


basename() 을 사용하면 될것 같네요.
basename() 을 사용하면 될것 같네요.
--
익스펙토 페트로눔
파일이름만 뽑는 건 cjh님 말씀처럼 basename을 이용하시면 되고,
파일이름만 뽑는 건 cjh님 말씀처럼 basename을 이용하시면 되고,
코드에서 segmentation fault가 나는건
char *filenamewPath, *filenamewoPath, *tempPtr 에서 포인터만 선언해서 그렇습니다.
strcpy 대신에 strdup를 사용하거나 그 전에 영역을 할당해 주면 됩니다.
댓글 달기