[질문] 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를 사용하거나 그 전에 영역을 할당해 주면 됩니다.
댓글 달기