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
[18605] Re:[질문]시리얼(232C) 데이터를 소켓으로 받아서 처리
개박살.U&I [inutero] 995 읽음    2002-05-17 10:26

안녕하세요? 개박살입니다.

: strcpy(temp,Str.c_str());

여기가 문제입니다.. strcpy란놈은 스트링을 Copy하는 함수입니다.

프로그램에서의 스트링은 끝이 0x00 즉, NULL로 끝나는 메모리 배열을 지칭하므로

님께서 말씀하신

: 0x54, 0x04, 0x00, 0x0f, 0xff, 0x00, 0x00, 0xa0, 0x0d, 0x0a

가 0x54, 0x04, 0x00 <<-- 여기서 끝이 나게 되는거죠

2글자의 String으로 계산이 되어서 이렇게 되는거 같군요

흠.. 그럼 참고하세요~

배준상 님이 쓰신 글 :
: 안녕하세요
: 빌더 왕초보 배준상이라고 합니다
: 다름이 아니라, 무지 급한 질문하나 드리려고 합니다.
: 내용인 즉, 다음과 같습니다.

: socket component를 통해서 데이터를 받는데 데이터의 내용은 hex입니다
: 즉 다음과 같은 10개의 byte를 받습니다.
: 0x54, 0x04, 0x00, 0x0f, 0xff, 0x00, 0x00, 0xa0, 0x0d, 0x0a
: 그런데, 두번째 바이트까지만 수신되고 나머지는 blank로 인식됩니다.
: 제 코드가 잘못된거 같은데, 어딘지 도무지 찾을수가 없군요
: 도와주세요
: 제 코드는 다음과 같습니다.

: AnsiString Str, Str1;
: char temp[80], x[80];
: Str = ClientSocket->Socket->ReceiveText();
: strcpy(temp,Str.c_str());
: for(int i=0;i<10;i++)
: {
:     sprintf(x, "%x", temp[i]);
:     Str1 = Str1 + x + " ";
: }
: Memo1->Lines->Add(Str1);
:
: 물론, 동일한 코드로 0x54만 10바이트 반복해서 받으면 정상입니다.

+ -

관련 글 리스트
18564 [질문]시리얼(232C) 데이터를 소켓으로 받아서 처리 배준상 847 2002/05/16
18605     Re:[질문]시리얼(232C) 데이터를 소켓으로 받아서 처리 개박살.U&I 995 2002/05/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.