metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-04-22 06:05 pm

C, parse comma-separated line

Кошерен ли такой код для разбиения строки, разделенной запятыми на отдельные строки: http://ideone.com/rhNXq ?

PS: strtok не признаю по идеологическим причинам - она меняет анализируемую строку, что меня крайне пугает, хотя в моем конкретном случае это не мешает.

PPS: безотносительно к strtok, в функции было минимум две ошибки - отсутствие проверки на выход за пределы буфера и попадание eol в последнюю строку (девайсина, с которой приходит строка, терминирует ее \r)

[identity profile] metaclass.livejournal.com 2012-04-22 05:47 pm (UTC)(link)
Проблема в том, что работало. Пока я не стал использовать ее вывод для дальнейшего парсинга, и то при этом в первую очередь сломалось на \r в последней строке.

А зачем разбивать на две строки, по моему так понятнее?

[identity profile] blackyblack.livejournal.com 2012-04-22 05:52 pm (UTC)(link)
Ну логика такая. Чтобы разбить строку, разделенную на части запятыми, нужно найти запятую и разбить строку. :)
Edited 2012-04-22 17:52 (UTC)

[identity profile] metaclass.livejournal.com 2012-04-22 05:58 pm (UTC)(link)
Так мне строки по отдельности не нужны, достаточно указатель на них и размер.

[identity profile] artureg.livejournal.com 2012-04-22 06:17 pm (UTC)(link)
зачем ты изобрёл велосипед и закатил солнце вручную?

[identity profile] metaclass.livejournal.com 2012-04-22 06:22 pm (UTC)(link)
Ты видел либы, на которые мне ссылки дают?
Я их изучать, собирать и ставить буду дольше, чем свою прогу писать :)
Кроме того, я и чужой код с со своими багами вызову, сложно что ле:)

[identity profile] artureg.livejournal.com 2012-04-22 06:23 pm (UTC)(link)
зачем ты используешь язык, в котором на любой примитивный чих надо строить свой велосипед?

[identity profile] metaclass.livejournal.com 2012-04-22 06:31 pm (UTC)(link)
Его не нужно строить. Но я не знаю, как правильно, поэтому и использую, чтобы разобраться.

[identity profile] artureg.livejournal.com 2012-04-22 06:33 pm (UTC)(link)
правильно, не нужно, но зачем ты построил? если заморачиваться на подобных примитивных задачах, время разработки вырастет до бесконечности

[identity profile] metaclass.livejournal.com 2012-04-22 06:41 pm (UTC)(link)
Не вырастет. Вот если на каждый случай выбирать из 100500 готовых либ - вырастет. А так я свой парсер наговнял, понадобится что-то более сложное - буду изучать готовое.

[identity profile] artureg.livejournal.com 2012-04-22 06:43 pm (UTC)(link)
сплит обязан быть из коробки в любом нормальном языке

[identity profile] metaclass.livejournal.com 2012-04-22 06:52 pm (UTC)(link)
strtok, strsep, strspn, strcspn, strpbrk есть :)

[identity profile] berezovsky.livejournal.com 2012-04-22 07:41 pm (UTC)(link)
мало гласных для мунспика же

[identity profile] artureg.livejournal.com 2012-04-22 07:42 pm (UTC)(link)
в любом случае к использоваию малопригодно