한글비교는 안되더라.
그래서 직접 비교하는 함수를 만들었어.
찾아보니 한글은 자음모음 따로 분리하는게 아니라 완성된 한 글자를 2바이트로 표현하더라.
한글문자열을 char* 타입에 저장하고 %s로 읽어지는걸로 봐서는 %s가 한글일때 2바이트씩 읽어와서 변환한다고 추측했고
그래서 함수를 char*타입으로 비교할 문자열 2개를 받고 받은 문자열을 2바이트인 (short)타입으로 변환해서 주소를 2칸씩 옮겨가며 비교를 했음
비교했을 때 앞이 뒤보다 크면 1을 반환하고 종료
반대면 2를 반환하고 종료
끝까지 비교를 했는데 리턴이 안되면
다시 앞문자열의 길이가 뒷문자열보다 길 경우 1을 반환
반대면 -1,같으면 0을 반환하도록 짰음
하지만 실행결과는 비교가 제대로 안됏음
여기서 내가 틀릴 수 있는 부분을 예상해보면
1.%s가 한글일때 2바이트씩 읽어온다.
2.한글이 사전 순서대로 값을 가진다.
이 두가지가 내 생각의 오류인데 이 부분에 대해서 아는 사람 있음??
바퀴는 가져다 쓰는게 정신 건강에 이로움
근데 그냥 서로 바이트 비교하면 되는거 아냐? 한글 문자열은 끝나는거 뭐로 표시함? 그거만 알면 될 거 같은데
뭘 쓰던간에 문자열을 0으로 끝을 표시할거임
근데 문자를 읽을때 이걸 1바이트씩 읽어야하는지 2바이트씩 읽어야하는지 구분하는건데
그 구분 방법을 잘 모르겟음 처음 읽는 비트의 값으로 구분한다기에는 1바이트로 표시되는 문자에도 첫 비트값이 1인게 있을거고...
그니까 두 바이트로 쪼개든 3바잍로 쪼개든 같은 문자열은 결국 1바이트 1바이트가 다 같을 것인데.. 왜 strcmp가 안 통할까?ㅏ
코드를 가져오너라앗
아니지 1바이트씩 가져와서 비교를 하는 함수에 2바이트씩 값을 가지는 문자를 비교하면 안되지 예를들어 AA07 이랑 0AB4를 비교한다고 생각해봐
정렬해야함
혹시 음수값을 읽어와서 문제가 되나하고 short를 unsigned short로 바꿔봤는데 안됨