nick7inc
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Добрый вечер. Столкнулся с проблемой при работе с scanf(). Какая у меня задача. Есть табличка данных в текстовом файле, формат double, в строках данные разделены (допустим) запятыми, строки - символом перевода строки (\n). Прочитать такой файл довольно просто, пока не сталкиваешься с вариантом, когда какое-то число пропущено. Код: 0.0,0.1,0.2 0.3,0.4,0.5 0.6,0.7, 0.8,0.9,1.0 | Получается, что scanf перескакивает через символ конца строки. Вот мой код Как поступить в данной ситуации средствами stdio без стримов и разбиения файла на строки (последний вариант я уже знаю)? Добавлено Похоже, что почти никак. Только '[', 'c', или 'n' могут читать символы, относимые к пробелам (' ', form feed '\f', new-line '\n', carriage return '\r', horizontal tab '\t', and vertical tab '\v'). По приведённой ссылке советуют использовать последовательность чтения всей строки до символа конца строки во временный буффер, а далее - парсить. Если используется символ табуляции, то его лучше заменить на что-то другое, не имеющее отношение к "пробельным" символам, т.к. даже в отдельной строке сложно узнать, где стоит один символ табуляции, а где их несколько вперемешку с читаемыми данными.
---------- Джин, не лезь в бутылку. |
| Всего записей: 1138 | Зарегистр. 04-05-2007 | Отправлено: 19:23 03-12-2014 | Исправлено: nick7inc, 10:22 04-12-2014 |
|