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
[68150] [자답]
외토리 [] 982 읽음    2012-09-12 09:56
답변 달아주신 아담님 감사합니다..


아무래도 아담님 말씀대로 무슨 이윤지는 모르겠지만 변수가 영향을 받나봅니다..

그런데 제가 디버깅 기술이 부족해서..
변수가 깨지는지 그런건 모르겠고..

간단하게..


int inD; 를 지우고

for (inD = 0; str[inD] != 0 ; inD++)
--> for(int inD=0; str[inD] != 0; inD++)


이렇게 바꾸니깐 돌아가는군요..
해결했다고 봐야하는건지;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

여튼 for 루프 돌리는 경우에 변수를 for문 안에서 생성하는게 바람직(?) 한거 같네요..

분명 코드 자체에 문제가 없는거 같은데..
이런 경우를 만나는 경우가 많은가요??

/--------------------------------------------------------------------------------------------------------
아담 님이 쓰신 글 :
: 테스트 해보니 잘동작 합니다.
:
: 혹시 다른데서 메모리를 잘못사용하여 inD변수가 깨지는것은 아닌지 살펴보십시요.
: 다른 부분 메모리 접근버그로 다른 변수가 영향받을 수도 있습니다.
:
: 외토리 님이 쓰신 글 :
: : //-------------------------------------------------------------------------------------------------
: : 제가 질문을 구체적으로 안적었네요..
: : str은
: : char str[128]로 선언이 되어 있습니다.
: : 그리고 memset으로 초기화를 하였구요..
: :
: : 밑에 질문을 다시 말씀드리면
: :
: : 1.  sprinft() 함수만 실행되고 나면..
: :      inD가
: :      1 ---> 0 으로 바뀌는 이유를 모르겠습니다..
: :
: : 2.  같은 코드가 서버에서 사용할때는 정상작동하고
: :      클라이언트에서는 비정상작동 하는 이유도 모르겠습니다..
: : //-------------------------------------------------------------------------------------------------
: :
: : 
: : 아담 님이 쓰신 글 :
: : : str[inD] 에서
: : : str이 AnsiString인가요?
: : : 그렇다면 str[1]에서 부터 시작해야 합니다.
: : : str[inD]   -> str[inD+1]
: : :
: : : 그리고 문자열 끝이나 중간에 NULL문자가 없으면 무한돕니다.
: : :
: : : 외토리 님이 쓰신 글 :
: : : : for (inD = 0; str[inD] != 0 ; inD++)
: : : : {
: : : :     sprintf(heXa ,"%x", str[inD]);
: : : :     Memo2->Text = Memo2->Text + " " + heXa;
: : : : }
: : : :
: : : : inD 변수가
: : : :
: : : : sprintf() 함수를 빠져 나올때..
: : : :
: : : : 0으로 바뀜니다..
: : : :
: : : : for 루프에서 inD++
: : : : 1로 바뀌지만..
: : : :
: : : :
: : : : sprintf() 함수를 빠져 나오면서
: : : :
: : : : 또다시
: : : :
: : : : 0으로 바뀜니다..
: : : :
: : : :
: : : :
: : : : 1 0 1 0 1 0 1 0
: : : : 즉 for루프를 빠져나오지 못하고 무한루프를 도는데요..
: : : :
: : : : 환장하겠습니다..
: : : :
: : : :
: : : : sprintf() 함수가 문제인건가여??
: : : :
: : : :
: : : : 이게 클라이언트 부분쪽 쏘스인데..
: : : :
: : : :
: : : :
: : : :
: : : :
: : : :
: : : :
: : : : 서버쪽에도
: : : :
: : : : 완전히 동일하게 털끝하나 안틀린 부분이 있는데..
: : : :
: : : : 거기서는 0 1 2 3 4 5 6
: : : :
: : : : 돌면서
: : : :
: : : : 조건이 완성되면 빠져 나오는데..
: : : :
: : : :
: : : :
: : : : 어디서는되고 어디서는 안되고;;
: : : :
: : : : 정말 이해가 안갑니다..

+ -

관련 글 리스트
68138 for을 도는데 계속 0으로 바뀌면서 무한 루프를 돌아서 질문을 드립니다.. 외토리 1096 2012/09/11
68140     Re:for을 도는데 계속 0으로 바뀌면서 무한 루프를 돌아서 질문을 드립니다.. 아담 994 2012/09/11
68144         Re:Re:for을 도는데 계속 0으로 바뀌면서 무한 루프를 돌아서 질문을 드립니다.. 외토리 996 2012/09/11
68146             Re:Re:Re:for을 도는데 계속 0으로 바뀌면서 무한 루프를 돌아서 질문을 드립니다.. 아담 1030 2012/09/11
68150                 [자답] 외토리 982 2012/09/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.