Библиотека для распространения
Функция endofline нужна для выявления и обработки ситуаций, когда вводимая строка заканчивается символами возврата каретки, перевода строки, ими обоими вместе или даже EOF:
Здесь необходима отдельная функция, поскольку стандартные функции ввода не обрабатывают все многообразие нетривиальных форматов, встречающихся в реальных условиях.
Наш прототип использовал strtok для определения следующего поля поиском символа-разделителя, которым в принципе является запятая. Однако при таком подходе невозможно обрабатывать запятые, находящиеся внутри кавычек. В split необходимо внести глобальные изменения (хотя ее интерфейс и не изменится). Представьте себе такие строки ввода:
Каждая строка содержит по три пустых поля. Для того чтобы split была в состоянии корректно интерпретировать такие строки и им подобные, ее реализацию придется глобально усложнить, – это классический пример того, как особые случаи и граничные условия оказываются доминирующими в программе.