Иллюстрированный самоучитель по практике программирования

Библиотека для распространения

В теле цикла массив указателей на поля при необходимости увеличивается, после этого вызывается очередная функция, осуществляющая поиск и обработку следующего поля. Если поле начинается с двойной кавычки, advquoted находит поле и возвращает указатель на разделитель, которым поле заканчивается. В противном случае для поиска следующей запятой мы используем библиотечную функцию strcspn(p, s), которая ищет в строке р следующее вхождение любого из символов строки s; возвращает эта функция количество пропущенных символов.

Двойные кавычки внутри поля представляются парой смежных двойных кавычек; функция advquoted сжимает такую комбинацию до одной кавычки, а также удаляет кавычки, обрамляющие поле. Дополнительный код добавлен в попытке справиться с правдоподобным вводом, не подходящим под спецификацию, – таким, например, как "abc"def. В подобных случаях мы добавляем в конец поля все, что заключено между второй кавычкой и следующим разделителем. Оказывается, Microsoft Excel использует схожий алгоритм.

Иллюстрированный самоучитель по практике программирования › Интерфейсы › Библиотека для распространения

Поскольку входная строка уже разделена, то реализация csvfield и csvnfield становится тривиальной:

Иллюстрированный самоучитель по практике программирования › Интерфейсы › Библиотека для распространения

Иллюстрированный самоучитель по практике программирования › Интерфейсы › Библиотека для распространения

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.