|
strlen을 쓰는 것은 매우 위험한 것 같습니다.
보통 시리얼에서 읽어올 때, ReadFile 등의 API를 쓰실텐데 이 때, 읽은 바이트 수를 알 수 있으니...
그것으로 기본으로 확인하시기 바랍니다.
시리얼 통신의 특성상 잡음을 타는 경우가 많습니다. 그러면 엉뚱한 데이터가 들어오는 경우가 생기는데
null terminator가 지정되지 않은 데이터를 strlen에 밀어 넣으면, access violation 에러를 유발하게 됩니다.
따로 버퍼를 두고 for문 등으로 길이를 구하는 함수를 만드셔서 처리하시는게 좋을 듯 합니다.
살랑 님이 쓰신 글 :
: 안녕하세요~
:
: 시리얼로 데이터를 받는데~
: 데이터 길이가 포함된 데이터를 받아서
: BYTE 형 버퍼에 저장하고 있습니다.
:
: 그래서 길이 비교를 위해서 체크를 해야되는데
: StrLen()을 사용해서 길이를 구했더니
: 중간에 NULL 값은 버리더군요;;
:
: NULL 값 까지 포함된 길이를 구하려고 하는데
: 어떤 방법이 있을까여?
:
: 그럼 좋은하루되세요~
|