Исторически, по крайней мере, в мире Unix «новая строка» или, скорее, U + 000A перевод строки был строкой терминатор .Это резко контрастирует с практикой в Windows, например, где CR + LF - это строка разделитель .
Наивное решение чтения каждой строки в файле состоит в добавлении символов кбуфер, пока не встретится LF.Если все сделано действительно глупо, это проигнорирует последнюю строку в файле, если она не была завершена LF.
Еще одна вещь, которую следует учитывать, - это макросистемы, которые позволяют включать файлы.Строка, такая как
%include "foo.inc"
, может быть заменена содержимым упомянутого файла, где, если последняя строка не заканчивается LF, она будет объединена со следующей строкой.И да, я видел такое поведение с определенным макроассемблером для встроенной платформы.
В настоящее время я твердо убежден, что (а) это пережиток древних времен и (б) я неМы видели современное программное обеспечение, которое не может справиться с этим, но мы все еще носим с собой множество редакторов в Unix-подобных системах, которые старательно помещают байт больше, чем необходимо в конце файла.