タイトルは適当
ネタ元→ 低レイヤの文字列操作 - おさかなラボ
ちょっとC書いてて、あるファイルがWindowsのスクリーンセーバーかどうか拡張子(.scr)で判別するロジックで、拡張子に大文字小文字がことがあることが判明したあと、ものすごくロジック書くのが面倒くさくなってきた俺はイラっときて次のように書いた。char *p = filename + strlen(filename); char lc = 'a' - 'A'; if((*--p|lc) == 'r' && (*--p|lc) == 'c' && (*--p|lc) == 's' && *--p == '.'){ // みつかったよ! }
まぁ、別にコードは間違ってはいないんだろうけど、
/* filename が ".scr" で終わってるかどうかチェックする */
char *p = filename + strlen(filename) - 4; /* 4 は ".scr" の文字列長 */
if ( p > filename && /* filename の文字列長が 4 より多いことのチェック */
p[0] == '.' &&
tolower(p[1]) == 's' &&
tolower(p[2]) == 'c' &&
tolower(p[3]) == 'r' )
{
/* 見つかったよ! */
}
とかの方が読みやすいんじゃないかな。拡張子名判定なんてそんなカリッカリにチューニングするようなもんでもないだろうし。
続きを読む: 適材適所




