|
jeroh 님이 쓰신 글 :
: directory에 있는 파일들을 차례로 읽어와 처리를 하는 함수를 만들고자 합니다.
:
: TSearchRec tsr;
: ......
: ......
:
: File *fp = fopen(tsr.c_str(),"r"); ------------***
: .....
:
:
: 이 코드에서, tsr.c_str()에는 파일이름이 정확이 들어 오나,
: *** 문장에서 file을 open하면 open에 실패하고 fp는 NULL값을 가지게 됩니다.
:
: AnsiString을 char*로 바꾸는 함수는 c_str이 맞는 거 같은데,
: 왜 이런 문제가 생기는지 모르겠군요...
:
: 많은 도움 부탁드릴께요.
: 그럼... 미리... 감사^^
:
안녕하세요.
위에서 tsr.c_str()이라고 하셨는데, tsr.Name.c_str()이 아닐까요..
tsr은 AnsiString 타입이 아니라, 구조체입니다.
tsr의 멤버중에, Name있는데 여기에 File이나, Directory이름이 들어갑니다.
그리고, Name에는 화일이 있는 경로의 정보가 들어가지 않습니다.
따라서 정확하게 화일을 오픈하기 위해서는 위의 코드는 이렇게 되어야겠죠.
AnsiString Currpath, Filename;
현재의 디렉토리 경로를 알아냅니다. 마지막에 경로구분문자(역슬래쉬)를 넣어주세요.
Currpath = GetCurrentDir() + "\\";
TSearchRec tsr;
......
......
위에서 화일을 찾은후에 Filename에 경로까지 넣어줍니다.
fopen의 첫번째 인자에 화일명을 쓸때, 실행화일과 다른 위치에 있는 화일일 경우에는
경로명 정보도 들어가야합니다. 항상 같이 해주는것이 낫겠죠.
Filename = Currpath+tsr.Name;
File *fp = fopen(Filename.c_str(),"r");
......
그럼..
|