Я хочу посчитать «столбцы» в файлах CSV, учитывая строковый шаблон его элементов, например,
1,2,3,4
с шаблоном "% d" должен вернуть 4.
Я написал токенизатор вот так
offset = 0;
strcpy(var_pattern, pattern) // e.g. pattern = "%d,"
strcat(var_pattern, "%n")
while (sscanf(&line[offset], LINE_SIZE, buf,var_pattern,&bytes_consumed > 0) {
count++; // column counter
offset += bytes_consumed
};
проблема, которую я имею, заключается в отсутствии разделителя, ',' в примере, для последнего элемента в строке файла CSV. На linux64 / gcc делаю
c = sscanf("12","%d,%n",&a,&b)
дает c = 1 (количество совпавших шаблонов), a = 12 и b = 32767 (использованные байты). Является ли это (идиотское) поведение стандартом / платформой? Или ошибка?
Я знаю о strtok или упакованном регулярном выражении, но мне бы хотелось использовать стандартный метод, и идея использования strtok вызывает у моего внутреннего программиста рвоту.
ТИА