내가 예전에도 이 얘기를 여러번 한 것 같은데

C 표준은 C가 돌아가는 charset에서 0부터 9까지의 숫자가 연속일 것은 보장하지만 A-Z나 a-z의 range가 연속일 것은 보장하지 않는다
(EBCDIC로 대표되는 몇몇 좆같은 charset들 때문)

따라서 ch >= 'a' && ch <= 'z'라든가, ch - 'a' + 1 따위의 코드는 이식성이 없음

하지만 ch >= '0' && ch <= '9'라든가, ch - '0'은 언제나 의도한 대로 동작한다는 보장이 있지

어쨌든 문자열 "abcdefghijklmnopqrstuvwxyz"와 strchr을 쓰는 게 좋은 코드라고 할 수 있다