146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
|
|
1 | |
Как считать строки из файла, если там больше одной строки?12.01.2009, 02:51. Показов 32919. Ответов 23
Как считать строки из файла в массив. Если в файле одна строка, то нет проблем, но если несколько, то при использовании функции fgets считывается только первая строка,
если fscanf, то же самое, если while (! feof (fin)) fscanf …, то копируется крайняя строка файла. Может кто – нибудь подсказать как это сделать без использования ofstream и т.д. И ещё вопрос, в чём отличие fscanf (fin, "%s", &str); от fscanf (fin, "%s", str); работает и так и так, только в первом случае с использованием взятия адреса str.
0
|
12.01.2009, 02:51 | |
Ответы с готовыми решениями:
23
Как считать строки из файла по одной? Если результат возвращает больше одной строки, ORA-01422, как быть? Как считать матрицу 3*3 из файла если он там задан неправильно Как запретить удаление строки в DataGridView, если пользователь не выбрал ни одной строки? |
683 / 232 / 16
Регистрация: 15.10.2007
Сообщений: 1,247
|
||||||||||||||||
12.01.2009, 03:01 | 2 | |||||||||||||||
Ничем не отличается str=&str
Добавлено через 3 минуты 41 секунду
1
|
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
|
|
13.01.2009, 02:24 [ТС] | 3 |
Если в файле меньше данных, чем объявлено
Код
fread(buf,1,511,f); abc abc , то считается это abc abc, а дальше идут какие-то символы. Как это исправить? Добавлено через 41 минуту 43 секунды Неправильно написал, если 511 исправить, например, на 1, то считается 1 символ, а дальше опять какие-то символы. Может это из-за того, что fread обычно используется при работе и бинарными файлами? Добавлено через 22 часа 32 минуты 22 секунды А можно как-нибудь по другому?
0
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||||
13.01.2009, 03:09 | 4 | |||||
когда идут какие-то символы это значит что нуль-символ в конце не записан (его надо специально записывать в буфер)
0
|
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
|
|
14.01.2009, 00:57 [ТС] | 5 |
Спасибо!
0
|
0 / 0 / 0
Регистрация: 11.08.2009
Сообщений: 16
|
|
11.08.2009, 13:04 | 6 |
а если размер файла заранее не известен. Например, MAXBUF может колебаться от 10 до 100.000.000.000?
Как быть в таком случае?
0
|
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
|
|
11.08.2009, 13:07 | 7 |
или С++ вектор используйте. или С-функции, отвечающие за перераспределение памяти.
0
|
0 / 0 / 0
Регистрация: 11.08.2009
Сообщений: 16
|
|
11.08.2009, 13:19 | 8 |
если я правильно понял, то надо использовать realloc() после каждой прочитанной строки?
Мне нужен именнос С
0
|
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
|
||||||
11.08.2009, 13:46 | 9 | |||||
Кому-то когда-то писал такое.
1
|
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
|
|
11.08.2009, 13:48 | 10 |
походу - да. я в Си не силён.
если вам не нужен будет произвольный доступ к элементам массива - то можно использовать структуру "односвязный список". и не нужно будет reallocation делать. минусы: 1) дополнительные затраты памяти на указатель для каждого узла. 2) последовательный доступ к элементам.
0
|
0 / 0 / 0
Регистрация: 11.08.2009
Сообщений: 16
|
|
11.08.2009, 14:04 | 11 |
zim22, Gravity, спасибо за ответы
0
|
Заблокирован
|
||||||
11.08.2009, 14:32 | 12 | |||||
Поробовал по своему на проблемку посмотреть, вот что вышло
0
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||||
12.08.2009, 03:25 | 13 | |||||
Сообщение от terlan
Сообщение от terlan
для больших файлов нужно решить как его открыть как выделить память под данные
0
|
0 / 0 / 0
Регистрация: 11.08.2009
Сообщений: 16
|
||||||
14.08.2009, 16:11 | 14 | |||||
всем спасибо за ответы, взял за основу такой вариант:
0
|
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
18.08.2009, 21:59 | 17 |
Когда переписывал - вызов функции rewind() потерял куда-то.
Может еще чего потерял
0
|
0 / 0 / 0
Регистрация: 11.08.2009
Сообщений: 16
|
|
18.08.2009, 22:07 | 18 |
верно, пропустил
вот только не могу исправить пост со cниппетом. Подскажите, пожалуйста, как править?
0
|
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
19.08.2009, 08:20 | 20 |
Еще можно модера попросить.
Модер может править любое сообщение.
0
|
19.08.2009, 08:20 | |
19.08.2009, 08:20 | |
Помогаю со студенческими работами здесь
20
Считать данные из файла от одной строки до другой Можно ли отредактировать pdf файл Фотошопом если там больше одной страницы? Если первый элемент строки больше некоторого заданного числа, то его следует поставить в конец строки Считать строки из файла, найти строки на определённую букву Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |