テキストエディタでも作ろうとしているならともかく、
普通は1行の長さの上限がわからないなんてことは無いのでfgets()チョー便利かつ速い
1行読み込めたか否かチェックしたければ、読んだ内容の末尾('\0'直前)が'\n'であることで確認してワカル、
(ファイル終端で'\n'を抜かされた場合も次の呼び出しが返却値NULL && !ferror(fp)になるのでこれまた読み込みエラーかガチでファイルの終わりに行き着いたのかワカル、
改行無しの行を仕様で禁止してしまえばループ内ではNULLを返すまで読む、というロジックで済ませて事後ferror()で読み込みエラーだったのか否か判別しても良い、