블로그 이미지
LanSaid

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Recent Post

Recent Comment

Recent Trackback

Archive

2014. 1. 25. 22:24 Study/C


간혹 파일 관련 작업하다보면 파일명과 경로를 따로 구분해야 할 때가 있다.
아무래도 문자열 및 포인터를 가지고 장난 치는거라 하다보면 뻑날 때도 있고 매번 하려니 시간이 아깝다.

그래서 어차피 매번 할거 다음에 쓸 때도 편하게 정리해놓는게 좋을 것 같다.

다만 아스키 코드 기준이고 유니코드용은 아니라는 점을 기억해둘 필요가 있다.



const char* _FilePath;
char*     mpFIleName;  // 로그 파일 명
 char*     mpFilePath;  // 로그 파일 경로

 unsigned short pathLength = strlen(_FilePath); // 파일명 포함 전체 경로 길이
 unsigned short idxFileNameEndPos = 0; // 파일경로(파일명 제외)가 끝나는 인덱스
 
 
 // 파일 경로 끝 위치 추출
 for( int i = pathLength ; i > 0 ; i-- )
 {
  if( _FilePath[i] == '\\')
  {
   idxFileNameEndPos = i;
   break;
  }
 }

 

 // 파일 경로(파일명 제외) 추출
 mpFilePath = (char*)malloc(sizeof(char) * (idxFileNameEndPos + 2));
 //mpFilePath = new char[idxFileNameEndPos + 2];
 memcpy_s(mpFilePath, idxFileNameEndPos+1, _FilePath, idxFileNameEndPos+1);
 mpFilePath[idxFileNameEndPos+1] = '\0';


 // 파일명 추출(경로 제외) 
 unsigned short fileNameLength = pathLength - idxFileNameEndPos - 1; // 파일명 길이 계산

 mpFIleName = (char*)malloc(sizeof(char) * (fileNameLength + 1));
 //mpFIleName = new char[fileNameLength + 1];
 memcpy_s(mpFIleName, fileNameLength, _FilePath + idxFileNameEndPos + 1, fileNameLength);
 mpFIleName[fileNameLength] = '\0'; 

'Study > C' 카테고리의 다른 글

[C언어] 120427 배열  (0) 2012.04.27
[C언어] 120413 배열, 재귀함수  (0) 2012.04.13
[C언어] 반복문 for와 while, 함수  (0) 2012.04.06
[C언어] 120330  (0) 2012.03.30
[C언어] 120316 변수  (0) 2012.03.16
posted by LanSaid