0 / 0 / 0
Регистрация: 24.03.2013
Сообщений: 53
|
||||||
1 | ||||||
Посимвольное чтение из файла09.05.2013, 16:17. Показов 9385. Ответов 26
Метки нет (Все метки)
Всем добрый вечер (ночь)! Так сложилась ситуация что нужно мне посимвольно считать текст из файла fin в массив str[i][j], причем считывать надо только ДО символа переноса строки \n(включительно). Скажите пожалуйста почему не работает мой фрагмент (где-то зацикливается):
По ходу выполнения чтения в str[0][0] записывается ноль и больше ничего не происходит. В чем косяк?
0
|
09.05.2013, 16:17 | |
Ответы с готовыми решениями:
26
Посимвольное чтение файла в вектор Посимвольное чтение Посимвольное чтение массива char Посимвольное чтение, добавление в конец строки |
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
||||||
09.05.2013, 16:42 | 2 | |||||
0
|
244 / 245 / 38
Регистрация: 08.04.2013
Сообщений: 927
|
||||||
09.05.2013, 16:45 | 3 | |||||
0
|
0 / 0 / 0
Регистрация: 24.03.2013
Сообщений: 53
|
|
09.05.2013, 16:57 [ТС] | 4 |
Насколько я понимаю тут все логично. заполнили 1 ячейку -> перешли на другую
аналогично зацикливается Главная суть: Мне нужно сохранить текст из файла сохраняя форматирование (отдельная строка текста в отдельной строке массива[количество символов в строке меньше 80, но в каждой строке по-разному]). Возможно вы предложите лучшее решение
0
|
244 / 245 / 38
Регистрация: 08.04.2013
Сообщений: 927
|
|
09.05.2013, 17:04 | 5 |
Вам поможет функция getline
0
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
|
09.05.2013, 17:12 | 6 |
0
|
0 / 0 / 0
Регистрация: 24.03.2013
Сообщений: 53
|
|
09.05.2013, 17:22 [ТС] | 7 |
какую только что заполнил. do ... while сначала выполняет блок do{}, потом проверяет условие в while. Заполнил ячейку очередным символом, если это символ переноса строки, то перехожу на другую строку (i++), если нет - продолжаю получать символы в текущую строку. Правильно?
0
|
244 / 245 / 38
Регистрация: 08.04.2013
Сообщений: 927
|
|
09.05.2013, 17:25 | 8 |
0
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
|
09.05.2013, 17:29 | 9 |
1. Прочитали символ. Сохранили его в i(0)j(0)
2. Инкрементируем j. Теперь там 1. 3. Проверили ячейку i(0)j(1). Вопрос: Ну и что мы проверяем? Вопрос 2: Это С или C++? Если С++ то http://www.cplusplus.com/refer... eam/tellg/.
0
|
0 / 0 / 0
Регистрация: 24.03.2013
Сообщений: 53
|
||||||
09.05.2013, 17:37 [ТС] | 10 | |||||
Спасибо, понял, но:
Текст в тестируемом файле:
0
|
244 / 245 / 38
Регистрация: 08.04.2013
Сообщений: 927
|
|
09.05.2013, 17:42 | 11 |
попробуйте вместо feof написать EOF
0
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
||||||
09.05.2013, 17:49 | 12 | |||||
Вы не хотите думать). Ладно:
0
|
0 / 0 / 0
Регистрация: 24.03.2013
Сообщений: 53
|
|
09.05.2013, 18:04 [ТС] | 13 |
точно не то. ругается при компилировании (expression must have (pointer-to-) function type).
сейчас попробую переписать на getline Добавлено через 15 минут спасибо за код, возможно его и возьму, только не понимаю для чего вы мне возвращаете count...
0
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
|
09.05.2013, 18:05 | 14 |
Это стандартная практика. Например если вы дальше будете записывать в файл? Что обратно цикл? или сразу блок в count charов
0
|
244 / 245 / 38
Регистрация: 08.04.2013
Сообщений: 927
|
||||||
09.05.2013, 18:13 | 15 | |||||
stima, у меня пару вопросов по Вашему коду.
http://www.cplusplus.com/reference/cstdio/fseek/ fseek возвращает 0, если все прошло удачно. Да? что делает эта строка ?
Кроме этого надо было сохранить каждую строку файла в отдельную строку. Вместо этого все что было в файле, оказалось в буфере. Как разобрать где там какая строка?
0
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
|
09.05.2013, 18:16 | 16 |
Вы правы ... используйте это ftell(in);
0
|
0 / 0 / 0
Регистрация: 24.03.2013
Сообщений: 53
|
|
09.05.2013, 18:19 [ТС] | 17 |
Вопрос всем: почему нужно использовать специальные функции для получения строки? почему нельзя посимвольно получать данные из файла и проверять очередной символ на перенос строки?
0
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
||||||
09.05.2013, 18:22 | 18 | |||||
0
|
244 / 245 / 38
Регистрация: 08.04.2013
Сообщений: 927
|
|
09.05.2013, 18:23 | 19 |
0
|
0 / 0 / 0
Регистрация: 24.03.2013
Сообщений: 53
|
|
09.05.2013, 18:29 [ТС] | 20 |
когда мне нужно было провести какую-то обработку текста я всегда делал это "налету" посимвольно считывая из потока и сразу проводя нужные изменения. сейчас впервые приходится брать текст из файлов. хочется сделать по-привычке)
0
|
09.05.2013, 18:29 | |
09.05.2013, 18:29 | |
Помогаю со студенческими работами здесь
20
Посимвольное чтение строки типа string Как создать посимвольное чтение строки и загнать в массив Посимвольное считывание из файла Посимвольное считывание из файла Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |