C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[5639] Re:AnsiString을 char*로 바꾸는 문제에 관해...
홍성진 [] 2693 읽음    2001-02-22 14:05
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");
......

그럼..

+ -

관련 글 리스트
5637 AnsiString을 char*로 바꾸는 문제에 관해... jeroh 2662 2001/02/22
5641     Re:AnsiString을 char*로 바꾸는 문제에 관해... 이영수 2598 2001/02/22
5639     Re:AnsiString을 char*로 바꾸는 문제에 관해... 홍성진 2693 2001/02/22
5645         이런.. 제가 실수를 했군요.. 다시 질문... jeroh 2647 2001/02/22
5648             Re:이런.. 제가 실수를 했군요.. 다시 질문... 이영수 2625 2001/02/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.