Страница 1 из 1

Чтение данных из файла

Добавлено: 10 мар 2005, 01:55
ZaikinMaxim
Вопрос такой. Незнаю как сделать так что бы можно было считать например вот это
файла data.txt
123
456
789

делаем
fread(s,9,file);
смотрю в дебагере
считавается только 123\n
как сделать так что бы читаем читаем выхватываем '\n' переходим на новую строчку продолжаем читать и так пока незакончаться данные

Добавлено: 10 мар 2005, 10:20
WinMain
Можно примерно так:

Код: Выделить всё

#include <stdio.h>

int main()
{
 FILE *f = fopen("data.txt", "rt");
 if (!f)
  {
    // Код сообщения об ошибке...
  }
 else
  {
   char szText[80];
   while (!feof(f))
    {
      fgets(szText, sizeof(szText)-1, f);
      // Код обработки текстовой строки...
    }
   fclose(f);
  }
 return 0;
}

Добавлено: 10 мар 2005, 12:47
ZaikinMaxim
Да неплохой вариант . А еще какие могут быть варианты ?

Добавлено: 10 мар 2005, 13:48
WinMain
Вариантов может быть сколько угодно. Всё зависит от условия конкретной задачи и от тех библиотек С/С++, которые ты собираешься использовать. Функции и классы для работы с файлами есть в любой известной среде программирования. А так же функции и классы для работы со строками и числами.

Добавлено: 10 мар 2005, 15:02
sergey-sv
Ребят, а вы не пробовали файл открывать, как двоичный :

FILE *f = fopen("data.txt", "rb");

и считывать не 9 символов, а 15 или более (с учетом всех \n) :) ???

Добавлено: 10 мар 2005, 16:07
ZaikinMaxim
Да. Все это конечно хорошие варианты. Но вот как сделать так читаем данные анализируем распихиваем по своим местам, как только выхватываем '\n' значит переходим в начало следующей строчки. Вернее самое для меня интересное это как перейти в начало следующей строки ?

Добавлено: 10 мар 2005, 16:54
WinMain
Честно говоря, не совсем понятно, чего ты хочешь. Функция fgets() и так читает текстовый файл построчно, т.е. считывает данные до тех пор, пока не встретит символ новой строки или конец файла (если конечно длина строки не превышает указанный размер буфера). При каждом последующем вызове функция будет считывать данные из файла с новой строки и записывать их в указанный буфер. А уже данные в буфере анализируй сам как тебе нужно.

Добавлено: 11 мар 2005, 08:59
sergey-sv
С WinMain'ом полностью согласен :) Читаешь весь файл в буфер (ну можно в ту же строку string или CString или что-то в этом роде) а потом анализируешь как тебе надо