![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
NetJunky |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 11.5.2008 Где: Tallinn Репутация: нет Всего: 0 |
Всем доброго времени суток.
Возможно тема и не очень разумна, но ничего не найдя по моему вопросу пришлось спрашивать тут. Думаю сложного в этом ничего нету, но у меня немного проблемно. Подскажите пожалуйста, как можно считать строку из файла, если я не знаю размера строки. Тоесть может быть, как мега большая, так и вообще пустая. Заранее всем спасибо. -------------------- Sleep, those little slices of death; Oh how I loathe them. © Edgar Allan Poe Таллиннцы http://vingrad.ru/groups.php?action=group_...mp;group_id=139 Для записи данных объёмом 1 Терабайт на бумагу, нужно срубить 50000 деревьев. |
|||
|
||||
bourne |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 12.7.2009 Репутация: нет Всего: нет |
fgetc() должна помочь
|
|||
|
||||
NetJunky |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 11.5.2008 Где: Tallinn Репутация: нет Всего: 0 |
Тоесть варианта, как разом считывать строку нету? Только по символьно?
-------------------- Sleep, those little slices of death; Oh how I loathe them. © Edgar Allan Poe Таллиннцы http://vingrad.ru/groups.php?action=group_...mp;group_id=139 Для записи данных объёмом 1 Терабайт на бумагу, нужно срубить 50000 деревьев. |
|||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
||||
|
||||
zloyshprot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 9.1.2008 Репутация: нет Всего: нет |
Я позволю себе влезть в данную тему, потому как вопрос мой связан с ней =)
Есть код, по вытаскиванию строчек из файла:
Собственно вопрос в том, что каждая строка считывается с переносом на следующую строку. т.е. вывод: File opened 1bla.txt 2bla.txt 3bla.txt 4bla.txt Press any key... Есть варианты, чтобы не было переносов на новую строку? А то мне надо дальше удалять файлы из списка, а я получаю Invalid argument и удаляется только самый последний файл из списка. |
|||
|
||||
bourne |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 12.7.2009 Репутация: нет Всего: нет |
Она ж принимает в качестве аргумента количество символов... Можно конечно указать 1000000 ![]()
Ну если ты не знаешь какая длина у строки, то имхо только посимвольно, т.к. надо "поймать" конец строки... Добавлено через 3 минуты и 9 секунд
С каким переносом? |
||||
|
|||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
не обратил на это внимание. тогда fgetc ![]() |
|||
|
||||
NetJunky |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 11.5.2008 Где: Tallinn Репутация: нет Всего: 0 |
zloyshprot, тебе надо fgetc. Так как тогда ты можешь каждый считываемый символ проверять на \n и если так, то делать запись за место \n на \0 и переходить на следующую строку.
Вопрос такой. Если у меня массив вышел, который из трёх ячеек [1][3][\0]. Можно ли как-то верно перевести его в int или может есть какой-то алгоритм, как можно считать в int так чтобы получилось такое число? П.С. 13 привёл, как пример, может быть и любое другое. -------------------- Sleep, those little slices of death; Oh how I loathe them. © Edgar Allan Poe Таллиннцы http://vingrad.ru/groups.php?action=group_...mp;group_id=139 Для записи данных объёмом 1 Терабайт на бумагу, нужно срубить 50000 деревьев. |
|||
|
||||
ller |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 4.8.2008 Где: г. Таганрог Репутация: 2 Всего: 4 |
||||
|
||||
djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 4 Всего: 39 |
Не сходите с ума, к черту посимвольное чтение. Читайте буферами и ищите в нем перенос строки.
Также в GNU еще есть специальное расширение: man getline. -------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Надо замэпить файл в память и искать строки в ней (с помощью memcmp например)
|
|||
|
||||
djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 4 Всего: 39 |
xvr предложил наилучший способ. Вечно я про него забываю.
-------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
NetJunky |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 11.5.2008 Где: Tallinn Репутация: нет Всего: 0 |
xvr, djamshud, я так понимаю, что Ваши советы были уже не на млй вопрос)
-------------------- Sleep, those little slices of death; Oh how I loathe them. © Edgar Allan Poe Таллиннцы http://vingrad.ru/groups.php?action=group_...mp;group_id=139 Для записи данных объёмом 1 Терабайт на бумагу, нужно срубить 50000 деревьев. |
|||
|
||||
djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 4 Всего: 39 |
NetJunky, нет, на ваш:). Только это советы не в духе "вызвать такую-то функцию", а впринципе, как делать. Код получится более громоздким, но куда более эффективным.
-------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
NetJunky |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 11.5.2008 Где: Tallinn Репутация: нет Всего: 0 |
djamshud, просто memcmp ещё я могу понять, а вот getline() если я не ошибаюсь используется только начиная с С++, а значит уже изначально не подходила. Так как спрашивал именно про Си, но всёравно спасибо.
Просто далее был вопрос от человека у котого пример на С++, вот и решил, что ответ уже ему адресуются. -------------------- Sleep, those little slices of death; Oh how I loathe them. © Edgar Allan Poe Таллиннцы http://vingrad.ru/groups.php?action=group_...mp;group_id=139 Для записи данных объёмом 1 Терабайт на бумагу, нужно срубить 50000 деревьев. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |