|
모르고 넘어 갈 수 있었던 부분을 지적해 주셔서 감사드립니다.
여러가지로 배우고 느끼는데 큰도움이 되었습니다.
앞으로도 좋은 답변 부탁드리겠습니다...^^
장성호 님이 쓰신 글 :
: while(packet[size] !='\0')
: printf("%d",size++);
:
: 위 while문에서 packet배열에 쓰레기값이 꽉차 있다면 ... while문이 언제 끝나죠?
:
:
: 참고..
:
: 1. AnsiString은 한Byte씩 즉 char씩 배열로 접근이 가능합니다.
: 새로운 char 버퍼를 선언하고 그곳에 copy할 필요 없다는것입니다.
:
: (단, 배열의 번지는 1번지 부터 시작합니다.)
:
: 2. AnsiString은 길이를 제공해주는 함수가 있습니다. str.Length();
: AnsiString을 쓰지 않고 char 버퍼를 사용하더라도 while문돌릴것이 아니라 strlen()으로 구하면 되겠죠
:
: 이런식으로...
:
: str.printf("C0""%d"",B3,REQ,""%d",Cont,Bar);
: char cksum = str[1];
: for(int i =2 ; i <= str.Length() ; i++)cksum^= str[i];
:
:
: 이렇게 적어주면 안되는데....
:
: 그럼..
:
:
: sunje 님이 쓰신 글 :
: : //---------------------------------------------------------------------------
: :
: : #include <vcl.h>
: : #pragma hdrstop
: :
: : #include <stdio.h>
: :
: : #include "Unit1.h"
: : //---------------------------------------------------------------------------
: : #pragma package(smart_init)
: : #pragma resource "*.dfm"
: : TForm1 *Form1;
: : //---------------------------------------------------------------------------
: : __fastcall TForm1::TForm1(TComponent* Owner)
: : : TForm(Owner)
: : {
: :
: : Cont=1;
: : Bar=1;
: : }
: : //---------------------------------------------------------------------------
: :
: : void __fastcall TForm1::Timer1Timer(TObject *Sender)
: : {
: : // int Cont; ->헤더파일
: : // int Bar; ->헤더파일
: : AnsiString str, str2, str3;
: :
: : if( Cont <=9 )
: : {
: : str.printf("C0""%d"",B3,REQ,""%d",Cont,Bar);
: :
: : char packet[] = "";
: : int i;
: : int size = 0;
: : char cksum = 0;
: :
: : sprintf(packet, "%s", str);
: :
: : while(packet[size] !='\0')
: : printf("%d",size++);
: :
: : printf("\n");
: :
: : for(i = 0 ; i < size ; i++)
: : {
: : if(i == 0)
: : cksum = packet[i];
: : else
: : cksum^= packet[i];
: : }
: :
: : str3.printf("%X",cksum);
: :
: : Edit4->Text = str3;
: :
: : str2.printf("$C0""%d"",B3,REQ,""%d""*""%x""\n ",Cont,Bar,cksum);
: :
: : Memo1->Lines->Add( str2 );
: :
: : Bar++;
: :
: : if (Bar>=9 )
: : {
: : Cont++;
: : Bar=1;
: : }
: : }
: : }
: : //---------------------------------------------------------------------------
: :
: : 들어온 데이터에 대해 체크섬을 만들려고 하는데요.
: : 위의 프로그램을 실행하면 아래 부분부터 메세지 창과 함께 프로그램이 멈추네요...
: :
: : Edit4->Text = str3;
: :
: : str2.printf("$C0""%d"",B3,REQ,""%d""*""%x""\n ",Cont,Bar,cksum);
: :
: : Memo1->Lines->Add( str2 );
: :
: : 이유를 잘 모르겠습니다.
: : 고수님들의 조언 부탁드립니다.......
|