|
제가 글을 올리는 과정에서 실수가 있었습니다.
물론, 파일 경로를 다 적어 줬구요, 마지막에 \\까지 정확하게 넣어 줬구요,
그리고 tsr.c_str()이 아니라, tsr.Name.c_str()로 해줬구요..
그래서 tsr.Name.c_str()한 값은 정확하세 제가 원하는 파일 명이 들어 오거든요.
근데도 파일이 열리지 않고 NULL을 return하는군요...
다른 생각해볼 문제는 없는가요?
홍성진 님이 쓰신 글 :
: 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");
: ......
:
: 그럼..
:
|