>>275
(2)whileになってるのは検索文字列の終端(〜cat\0)まで繰り返させるため。
全文字数が分っていればfor文でも出来るだろうが検索文字数が変わったときに
for文での上限の書き換えが必要になる。

その上でif文で検索文字'a'と同一か判定してる。
無ければif文を飛ばしてp++でwhile文に戻って次の文字との照合を行う。

あとは>>278の説明通りかと。