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

Модераторы: Romeo, Hawk, Absurd, WinMain, DeeJayC

Ответить
ZaikinMaxim
Сообщения: 23
Зарегистрирован: 23 фев 2005, 09:18
Контактная информация:

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

Сообщение ZaikinMaxim » 10 мар 2005, 01:55

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

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

Аватара пользователя
WinMain
Сообщения: 912
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

Сообщение WinMain » 10 мар 2005, 10:20

Можно примерно так:

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

#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;
}

ZaikinMaxim
Сообщения: 23
Зарегистрирован: 23 фев 2005, 09:18
Контактная информация:

Сообщение ZaikinMaxim » 10 мар 2005, 12:47

Да неплохой вариант . А еще какие могут быть варианты ?
С уважением Заикин Максим Викторович

Аватара пользователя
WinMain
Сообщения: 912
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

Сообщение WinMain » 10 мар 2005, 13:48

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

sergey-sv
Сообщения: 6
Зарегистрирован: 10 мар 2005, 14:49
Откуда: Москва

Сообщение sergey-sv » 10 мар 2005, 15:02

Ребят, а вы не пробовали файл открывать, как двоичный :

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

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

ZaikinMaxim
Сообщения: 23
Зарегистрирован: 23 фев 2005, 09:18
Контактная информация:

Сообщение ZaikinMaxim » 10 мар 2005, 16:07

Да. Все это конечно хорошие варианты. Но вот как сделать так читаем данные анализируем распихиваем по своим местам, как только выхватываем '\n' значит переходим в начало следующей строчки. Вернее самое для меня интересное это как перейти в начало следующей строки ?
С уважением Заикин Максим Викторович

Аватара пользователя
WinMain
Сообщения: 912
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

Сообщение WinMain » 10 мар 2005, 16:54

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

sergey-sv
Сообщения: 6
Зарегистрирован: 10 мар 2005, 14:49
Откуда: Москва

Сообщение sergey-sv » 11 мар 2005, 08:59

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

Ответить