Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.94
Sergey_O
 Аватар для Sergey_O
5 / 5 / 1
Регистрация: 09.12.2009
Сообщений: 65
26.05.2010, 16:15     Функция fgets и перевод строки #1
Есть файл со строками, надо прочитать все через функцию fgets.
Как сделать, чтобы она читала каждую строку по очереди?

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

Проблема на самом деле в том, что только fgets учитывает пробелы при считывания(cin и fscanf не работают).
Возможно можно использовать другую функцию, главное учитывать пробелы и возможность переходить со строки к строке.
решение такой же задачи как и у вас
работа с файлами
Sergey_O
 Аватар для Sergey_O
5 / 5 / 1
Регистрация: 09.12.2009
Сообщений: 65
26.05.2010, 16:29  [ТС]     Функция fgets и перевод строки #3
Цитата Сообщение от Mur3ik Посмотреть сообщение
а где там перевод строки?
Mur3ik
102 / 102 / 4
Регистрация: 12.05.2010
Сообщений: 232
26.05.2010, 16:32     Функция fgets и перевод строки #4
Цитата Сообщение от Sergey_O Посмотреть сообщение
а где там перевод строки?
fgets сама переходит со строки на строку
robert19
25 / 25 / 3
Регистрация: 26.03.2010
Сообщений: 305
26.05.2010, 16:36     Функция fgets и перевод строки #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;
}
Sergey_O
 Аватар для Sergey_O
5 / 5 / 1
Регистрация: 09.12.2009
Сообщений: 65
26.05.2010, 16:37  [ТС]     Функция fgets и перевод строки #6
Цитата Сообщение от Mur3ik Посмотреть сообщение
fgets сама переходит со строки на строку
Значит ты меня не понял:
-вот я один раз обратился к файлу - прочитал полностью первую строку и записал её в переменную, обработал.
-снова обращаюсь к файлу, теперь нужно, чтобы прочитал только вторую строку.
-и т.д

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


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

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

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

Добавлено через 22 минуты
Может быть вообще нужно через другую функцию это всё делать?
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
26.05.2010, 17:29     Функция fgets и перевод строки #9
Цитата Сообщение от Sergey_O Посмотреть сообщение
так вот я не понял, как сделать переход к новой строке. Там параметром можно писать, сколько символов читать, но это не то совсем.
fgets читает до тех пор, пока не прочитает определенное количество символов, указанных во втором параметре или пока не встретит символ перехода на новую строку. Таким образом, если у тебя в файле все строки заканчиваются символом перехода строки, и у тебя строковая переменная достаточно большого размера, чтобы вместить самую длинную строку в файле, то fgets будет считывать строго по строкам.
Sergey_O
 Аватар для Sergey_O
5 / 5 / 1
Регистрация: 09.12.2009
Сообщений: 65
26.05.2010, 17:47  [ТС]     Функция fgets и перевод строки #10
всем спасибо.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2010, 14:52     Функция fgets и перевод строки
Еще ссылки по теме:

Не работает fgets C++
Использование функции fgets C++
C++ Функция перезаписывает символы строки заданным количеством символов другой строки

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

Или воспользуйтесь поиском по форуму:
odip
Эксперт C++
 Аватар для odip
7224 / 3286 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
27.05.2010, 14:52     Функция fgets и перевод строки #11
C чтением fgets бывают разные приколы
1) файл пустой
2) последняя строка в файле не содержит '\n'
4) строка не влазит в буфер
но все это преодолимо
Yandex
Объявления
27.05.2010, 14:52     Функция fgets и перевод строки
Ответ Создать тему
Опции темы

Текущее время: 01:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru