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
[41989] 문자열이기 때문이예요~~
아제나 [azena] 877 읽음    2005-09-22 15:11
결론부터 말씀드리면 전송은 제대로 된 것이며, 출력 부분에 문제가 있는 것 입니다.

메모리에 문자열을 보관할 때 문자열 끝에는 문자열이 끝났다는 것을 알리는 코드 \0 이 있어야 합니다.

strcpy()로 복사를 하셨으니 No[3], Type[3] 영역에는 문자열 끝을 알리는 0이 들어가 있겠죠.

ShowMessage는 문자열 한 줄만 출력합니다.

그러므로 No 영역을 찍다가 0을 만나니까 문자열이 끝났다고 생각하고 출력을 종료한 것 입니다.

^^

그럼

20000

곰두리아빠 님이 쓰신 글 :
: //헤더파일에는...   
:     typedef struct stc
:         {
:             char No[4];
:             char Type[4];
:         } stc;
:         typedef Tstc* Pstc;
:
:         Tstc rec;
:
: //함수 A에서 cpp 에서 이와 같은 방법으로 값을 넣습니다.
: strcpy(rec.No,IntToHex(No,3).c_str());
: strcpy(rec.Type,IntToHex(Type,3).c_str());
:
:
: //함수 B 에서 아래와 같이 데이타를 보내고자 합니다.
:         char * Buff = new byte[sizeof(rec)];
:         memcpy(Buff, &rec, sizeof(rec));
:         ShowMessage(Buff);
: //ShowMessage 부분에서 rec.No값만 찍힙니다. 하지만 rec.Type. 만 찍으면 잘 나옵니다. 왜 그럴까요??
:
:         Socket->SendBuf(Buff,sizeof(rec));
: //때문에 받는 쪽도 rec.No 데이타만 받아집니다.

+ -

관련 글 리스트
41985 [질문] 소켓을 구조체로 보내고자 할때.. 곰두리아빠 843 2005/09/22
41989     문자열이기 때문이예요~~ 아제나 877 2005/09/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.