프로그램을 만들고 사용을 하다 보면 strcmp로 두개의 문자열을 비교할 때 둘의 문자열이 같지 않더라도 0이 나오는 경우가 있는거 같은데 이런 경우는 무었이며 왜 그런 건가요??? 그런 경우를 보고도 그냥 념겨서 어떤 글자가 그런지는 모르겠네요..ㅠㅠ
str계열은 널문자 나올 때까지만 비교합니다. 이게 ascii나 utf8같은 인코딩에서는 문제가 없지만 다른 인코딩에서는 문제가 되는데...
만약 두 문자열이 utf16le 같은 인코딩을 사용했다면, 문자 표현 중간에 값이 00인 1바이트가 있을 수 있고, 당연히 그 뒤의 차이는 무시됩니다.
아 제가 예전에 UTF16을 그냥 strcmp로 처리했었던거 깉습니다. 그래서 비슷한 말이 나오면 문제가 생겼던 것 같네요~ 감사합니다~
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
str계열은 널문자 나올 때까지만 비교합니다. 이게
str계열은 널문자 나올 때까지만 비교합니다. 이게 ascii나 utf8같은 인코딩에서는 문제가 없지만 다른 인코딩에서는 문제가 되는데...
만약 두 문자열이 utf16le 같은 인코딩을 사용했다면, 문자 표현 중간에 값이 00인 1바이트가 있을 수 있고, 당연히 그 뒤의 차이는 무시됩니다.
감사합니다!
아 제가 예전에 UTF16을 그냥 strcmp로 처리했었던거 깉습니다.
그래서 비슷한 말이 나오면 문제가 생겼던 것 같네요~
감사합니다~
댓글 달기