Ой, подождите, я пропустил "запустить на linux" с "файлом Mac с CR".
ОК, ответ таков: документация fgets()
явно ссылается на "перевод строки" как терминатор строки. В частности, нельзя ожидать, что реализации Unix / Linux услышали о представлении старого Mac о CR как об окончании строки; поэтому неудивительно, что fgets
не видит эти CR в конце строки.
Обновление:
Я настоятельно рекомендую избегать большинства проблем - использовать утилиту командной строки, такую как tr
, чтобы просто перевести файл перед тем, как запустить в него программу.