C, parse comma-separated line
Apr. 22nd, 2012 06:05 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Кошерен ли такой код для разбиения строки, разделенной запятыми на отдельные строки: http://ideone.com/rhNXq ?
PS: strtok не признаю по идеологическим причинам - она меняет анализируемую строку, что меня крайне пугает, хотя в моем конкретном случае это не мешает.
PPS: безотносительно к strtok, в функции было минимум две ошибки - отсутствие проверки на выход за пределы буфера и попадание eol в последнюю строку (девайсина, с которой приходит строка, терминирует ее \r)
PS: strtok не признаю по идеологическим причинам - она меняет анализируемую строку, что меня крайне пугает, хотя в моем конкретном случае это не мешает.
PPS: безотносительно к strtok, в функции было минимум две ошибки - отсутствие проверки на выход за пределы буфера и попадание eol в последнюю строку (девайсина, с которой приходит строка, терминирует ее \r)
no subject
Date: 2012-04-22 03:09 pm (UTC)no subject
Date: 2012-04-22 03:13 pm (UTC)no subject
Date: 2012-04-22 03:17 pm (UTC)no subject
Date: 2012-04-22 03:13 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-04-22 04:42 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-04-22 03:26 pm (UTC)no subject
Date: 2012-04-22 03:52 pm (UTC)(no subject)
From:no subject
Date: 2012-04-22 07:45 pm (UTC)Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.
Вышеприведенную цитату надо калёны железом на жопах студентов профильных факультетов выжигать.
(no subject)
From:no subject
Date: 2012-04-22 08:59 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-04-22 03:40 pm (UTC)no subject
Date: 2012-04-22 03:47 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-04-22 03:52 pm (UTC)(no subject)
From:no subject
Date: 2012-04-22 03:58 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-04-22 04:37 pm (UTC)Если вам нужно просто разобрать CSV, то и для разбора оного есть готовые библиотеки с хорошей историей.
В строках можно даже с добрыми намерениями нагородить 'one off' и buffer overruns (как вы показательно его вставили в первой же функции сверху)
Еще стандартный совет из сети - не использовать арифметику указателей без сильной нужды. operator[] and indexes do the same job just fine.
Будет весело, гарантирую.
no subject
Date: 2012-04-22 04:41 pm (UTC)(no subject)
From:no subject
Date: 2012-04-22 04:42 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-04-22 05:38 pm (UTC)2. В идеале стоило бы разбить код на две функции: поиск символа в строке и разбиение строки по номеру символа.
3. \r в результате за ошибку не считаем. Откуда нам знать, что она тебе не нужна :)
В итоге, ждём исправленную версию.
no subject
Date: 2012-04-22 05:47 pm (UTC)А зачем разбивать на две строки, по моему так понятнее?
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-04-22 08:23 pm (UTC)no subject
Date: 2012-04-22 08:24 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-04-22 08:39 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-04-22 08:35 pm (UTC)no subject
Date: 2012-04-22 08:39 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-04-23 03:09 am (UTC)no subject
Date: 2012-04-23 06:39 am (UTC)(no subject)
From:(no subject)
From: