Правильно я понимаю, что
Код
for (; *pat != ':'; pat++)
не идентичен
Код
for (; *pat++ != ':'; )
Потому что в первом случае указатель остановится на символе ':', а во втором - за ним.
P.S. гы-гы, движок форума удаляет в коде пробелы после открытой скобки.