Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/68: Рейтинг темы: голосов - 68, средняя оценка - 4.68
5 / 5 / 3
Регистрация: 09.12.2009
Сообщений: 65
1

Функция fgets и перевод строки

26.05.2010, 16:15. Показов 12931. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть файл со строками, надо прочитать все через функцию fgets.
Как сделать, чтобы она читала каждую строку по очереди?

Проблема на самом деле в том, что только fgets учитывает пробелы при считывания(cin и fscanf не работают).
Возможно можно использовать другую функцию, главное учитывать пробелы и возможность переходить со строки к строке.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.05.2010, 16:15
Ответы с готовыми решениями:

Как работает функция fgets()?
Здравствуйте, такая проблема пытаюсь разобрать как работает функция fgets() как я понимаю она...

Функция fgets() удаление буфера
Доброго времени суток. Нужна помощь. Написал программу с использованием функции fgets(). Как...

Странно ведёт себя функция fgets
(в файле лежит предложение на английском) int main() { FILE *f; char str; if...

Считывает ли функция fgets строку посимвольно?
Проконсультируйте пожалуйста. Смотрите данная функция имеет три аргумента: //Первый из трех...

10
102 / 102 / 23
Регистрация: 12.05.2010
Сообщений: 232
26.05.2010, 16:28 2
Цитата Сообщение от Sergey_O Посмотреть сообщение
Есть файл со строками, надо прочитать все через функцию fgets.
Как сделать, чтобы она читала каждую строку по очереди?

Проблема на самом деле в том, что только fgets учитывает пробелы при считывания(cin и fscanf не работают).
Возможно можно использовать другую функцию, главное учитывать пробелы и возможность переходить со строки к строке.
решение такой же задачи как и у вас
работа с файлами
1
5 / 5 / 3
Регистрация: 09.12.2009
Сообщений: 65
26.05.2010, 16:29  [ТС] 3
Цитата Сообщение от Mur3ik Посмотреть сообщение
а где там перевод строки?
0
102 / 102 / 23
Регистрация: 12.05.2010
Сообщений: 232
26.05.2010, 16:32 4
Цитата Сообщение от Sergey_O Посмотреть сообщение
а где там перевод строки?
fgets сама переходит со строки на строку
1
29 / 29 / 7
Регистрация: 26.03.2010
Сообщений: 305
26.05.2010, 16:36 5
Вот вроде функция чтения из файла:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int Read_File (char* str){
        char fn[255]; 
        FILE *f;
        printf ("Enter File name: \n");
        gets(fn);
        f=fopen(fn,"r");
                if (!f){
                        printf ("Warning: no such file. Using stdin.");
                        return 1;
                }
        fseek(f,0,SEEK_END);
        long len = ftell (f);
        char* buf = new char [len+1];
        
        const int l_block = 1024;
        int num_block = len/l_block+1;
        fseek (f,0,SEEK_SET);
        fread (buf,l_block,num_block,f);
        buf[len] = '\0';
        strcpy(str,buf);
        puts(str);
        fclose(f);
return 0;
}
1
5 / 5 / 3
Регистрация: 09.12.2009
Сообщений: 65
26.05.2010, 16:37  [ТС] 6
Цитата Сообщение от Mur3ik Посмотреть сообщение
fgets сама переходит со строки на строку
Значит ты меня не понял:
-вот я один раз обратился к файлу - прочитал полностью первую строку и записал её в переменную, обработал.
-снова обращаюсь к файлу, теперь нужно, чтобы прочитал только вторую строку.
-и т.д

так вот я не понял, как сделать переход к новой строке. Там параметром можно писать, сколько символов читать, но это не то совсем.


2robert
спасибо, щас буду проверять.
да уж, сложноват ваш вариант для меня пока что)
0
102 / 102 / 23
Регистрация: 12.05.2010
Сообщений: 232
26.05.2010, 16:47 7
Цитата Сообщение от Sergey_O Посмотреть сообщение
Значит ты меня не понял:
-вот я один раз обратился к файлу - прочитал полностью первую строку и записал её в переменную, обработал.
-снова обращаюсь к файлу, теперь нужно, чтобы прочитал только вторую строку.
-и т.д
что тебе мешает прямо там в цикле после получения первой строки записать ее в переменную и обработать, потом в этом же цикле fgets вернет уже 2ю строку... итд...
1
5 / 5 / 3
Регистрация: 09.12.2009
Сообщений: 65
26.05.2010, 17:19  [ТС] 8
Пробовал, не возвращает.
А возможно как-нибудь сделать, чтобы fscanf считывал пробелы?

У меня вот допустим такая строка:
0|0|Проект лала|Сдача|17|36|13|26|4|2010|11|12|13|14|15|2011|16|17|18|19|11|2011

Я хочу её записывать в 1 переменную, а потом уже разбивать стртоком по словам, но это не суть. Главное чтобы оно правильно читалось, а сканф читает до первого пробела и обрывается.

Добавлено через 22 минуты
Может быть вообще нужно через другую функцию это всё делать?
0
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
26.05.2010, 17:29 9
Цитата Сообщение от Sergey_O Посмотреть сообщение
так вот я не понял, как сделать переход к новой строке. Там параметром можно писать, сколько символов читать, но это не то совсем.
fgets читает до тех пор, пока не прочитает определенное количество символов, указанных во втором параметре или пока не встретит символ перехода на новую строку. Таким образом, если у тебя в файле все строки заканчиваются символом перехода строки, и у тебя строковая переменная достаточно большого размера, чтобы вместить самую длинную строку в файле, то fgets будет считывать строго по строкам.
1
5 / 5 / 3
Регистрация: 09.12.2009
Сообщений: 65
26.05.2010, 17:47  [ТС] 10
всем спасибо.
0
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
27.05.2010, 14:52 11
C чтением fgets бывают разные приколы
1) файл пустой
2) последняя строка в файле не содержит '\n'
4) строка не влазит в буфер
но все это преодолимо
0
27.05.2010, 14:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.05.2010, 14:52
Помогаю со студенческими работами здесь

Файлы, строки, fgets, ошибка 0xC0000005
Вот такая вот ошибка: First-chance exception at 0x1025f9cb (msvcr100d.dll) in 6_1.exe:...

Вывод конкретно заданной строки файла через fgets
Есть функция вывода конкретной строки, если я хочу вывести первую строку файла, то она не выводит...

Заменить в строке все пробелы на перевод строки, а перевод строки изменить на два перевода
Меня интересует следующий вопрос: как заменить в моем стринге все пробелы на переходы на новую...

Строки читаются из текстового файла функцией fgets и указатели на них помещаются в структуру данных...
Вообщем вот такое задание: Строки читаются из текстового файла функцией fgets и указатели на них...

Разбиение строки на части, перевод строки в число и перевод числа
Есть задание: 1. Необходимо реализовать консольное приложение, позволяющее манипулировать строкой,...

Строки. Множества. Выполнить перевод символов строки из верхнего регистра в нижний и наоборот
ПОРЯДОК ВЫПОЛНЕНИЯ 1. Ввести множество, запись или строку с помощью клавиатуры. 2. Вывести на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru