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
[7366] Re:포인터로 문자열을 선언한곳에서...
왕초보 [] 1952 읽음    2001-05-11 09:23
error 님이 쓰신 글 :
: 문자를 어떻게 넣죠?
:
: char *temp[100];
:
: for(int i=0;i <= Pass->Text.Length();i++){
:          *temp[i] = Pass->Text[i].c_str();
:        }
: 흠.. 저렇게 하니까 왼쪽 구조체에도 *을 넣으라고 나오네요..
:
: 맨날 pascal만 하다가 씨할려니까 문법도 헤깔리고 씨에서 가리는 게 넘많아서
:
: 슬슬짜증이날려고 하네요.. 흠...... 저 소스의 원래뜻은 한글자식 temp에 edit박스의 내용물을
:
: 쑤셔넣는 것입니다..
:
: 글구
: char* temp[100]     
: char *temp[100]
: 의 차이점도 좀 설명해주시면 감사 ㅡㅡ;;;; 포인터가 남발(?)하는 상황에서 헤깔리네요....

일단 char* temp[100] 과 char *temp[100] 의 차이점은 없습니다.. 표현을 어떻게 하느냐는 개인의
성향이 문젠데 일단 코드 상으로는 똑 같은 문법입니다..

위의 소스코드에서는 for 문 안에서 *temp[i] = Pass->Text[i].c_str() 이라고 적으셨는데요..
*temp[i] 라는 것 자체는 포인터가 아니고 포인터 변수 안에 있는 값을 의미합니다..
그러니까.. *temp[i] 에는 포인터 값을 넣을수 없고 문자열을 넣을수가 있겠죠...
우측에 Pass->Text[i].c_str() 이라는 것은 char* 를 의미하는 것이기 때문에 Type 에러가 날
것입니다..
만약에 temp라는 곳에 edit박스의 내용을 넣으려면

temp[i] = Pass->Text.c_str(); 이라는 형태나 아니면 *temp[i] = Pass->Text; 정도가 될 것 같네요
그런데 Pass->Text[i] 라는 것은 어떤 의미로 적었는지를 잘 모르겠습니다..

아무튼 하나의 에디트 박스안의 내용을 넣으려면

char temp[100];
temp = Pass->Text; 로 하던지

char *temp;
temp = Pass->Text.c_str(); 형태로 하던지..

char *temp;
temp = new char[100];
strcpy( temp, Pass->Text.c_str() );

// 처리

delete temp;

형태로 하면 될것 같네요... 그럼 참고하시길...

+ -

관련 글 리스트
7365 포인터로 문자열을 선언한곳에서... error 1730 2001/05/11
7366     Re:포인터로 문자열을 선언한곳에서... 왕초보 1952 2001/05/11
7367         Re:Re:포인터로 문자열을 선언한곳에서... error 1706 2001/05/11
7369             Re:Re:Re:포인터로 문자열을 선언한곳에서... 왕초보 1708 2001/05/11
7371                 왕초보님 보세여~ error 1641 2001/05/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.