strchr() 内における c = (char)c; は、

  0x111 のような文字とは思えないデータでも文字データとして扱うなら必要
  文字とは思えないデータははじいてしまうなら不要

という事でよろしいか?