Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Извлечение последовательно строк из файла. Операции с файлами 
:(
    Опции темы
Iganga
Дата 29.12.2008, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 3.12.2007

Репутация: нет
Всего: 1



Добрый день уважаемые форумчане! 
Всех с Наступающим Новым Годом!

У меня такой вопрос - как считывать из файла строки последовательно, т.е одну за другой.
Код

void file_open_to_write(char *filename)
{
    ofstream file_in(filename,ios::in);
    char line[100];
    if(file_in.is_open())
    {
      cout<<"Enter line you want write to file\n";
      cin.getline(line,99);
      file_in<<line<<endl;
    }
}
void file_open_and_read(char *filename)
{
     char line[100];
     int i=0;
    ifstream file_out(filename,ios::out);
    if(file_out.is_open())
    {
        while(file_out)
        {        
          file_out.get(line,99);
          if(*line!='\n') 
              cout<<line<<endl;// здесь я считываю первую строку, как считать                               //по-очереди, не все оптом
        }
        file_out.close();
    }
}


Благодарю за внимание.
PM MAIL ICQ   Вверх
mrbrooks
Дата 29.12.2008, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



Iganga, пользуйся поиском. подобные темы всплывают раз в неделю, как здесь так и в центре помощи.

вот тебе пример. в нем есть ответ на твой вопрос.
PM MAIL   Вверх
xvr
Дата 29.12.2008, 11:38 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Строки последовательно считываются методом, который у тебя вызывается в строке 8, а именно getline. Либо одноименной функцией.
Гораздо интереснее у тебя другое:
Строка 3: ofstream file_in(filename,ios::in); Здесь создается объект типа ofstream, что обозначает 'поток ЗАПИСИ' с именем file_in, что по видимому должно обозначать 'файл для ЧТЕНИЯ', с режимом открытия ios::in, что согласуется с именем переменной (на которое компилятору наплевать), но не согласуется с типом объекта. 
Далее в строке 9 в него начинают ВЫВОДИТЬ (file_in<<line<<endl;). Не делай так - пожалей тех, кто будет это читать  smile 
Кстати, строки 16 и 21 - аналогично.

PM MAIL   Вверх
Iganga
Дата 29.12.2008, 12:56 (ссылка)  | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 3.12.2007

Репутация: нет
Всего: 1



xvr спасибо большое за ваши слова. Критика всегда учит.
Раз вы так говорите, то пожалуйста напишите как сделали бы вы.
Игнат.
PM MAIL ICQ   Вверх
mes
Дата 29.12.2008, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Iganga @  29.12.2008,  12:56 Найти цитируемый пост)
напишите как сделали бы вы.

А Вас самих не смущает, что
Цитата

ofstream file_in(filename,ios::in); // поток для записи назван, открыт
file_out.get(line,99);              // и используется для чтения ?!

ifstream file_out(filename,ios::out); // a поток для чтения назван, открыт
file_in<<line<<endl;                  // и используется для записи ?!

И неужели не догадываетесь, как надо исправить ?!  smile 


Это сообщение отредактировал(а) mes - 29.12.2008, 13:13


--------------------
PM MAIL WWW   Вверх
pan2004
Дата 29.12.2008, 13:09 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 357
Регистрация: 28.7.2007

Репутация: 2
Всего: 9



Цитата(mes @  29.12.2008,  13:07 Найти цитируемый пост)
ofstream file_in(filename,ios::in); // поток для записи назван, открытfile_out.get(line,99);              // а также используется для чтения ??

Это две разные переменные из двух разных функций.
Что не так?


--------------------
Qt4/C++ fan
WinXP SP3: MSVC++2005 Qt4.5.1 Boost1.39
сыграем в дурака?
PM MAIL   Вверх
mes
Дата 29.12.2008, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(pan2004 @  29.12.2008,  13:09 Найти цитируемый пост)
Что не так?

обратите внимание на выделенное жирным  smile 


--------------------
PM MAIL WWW   Вверх
Iganga
Дата 29.12.2008, 14:12 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 3.12.2007

Репутация: нет
Всего: 1



Есть ли в данном мною коде критические ошибки, из-за которых
программа может не работат

Код

ofstream file_OUT(filename,ios::in); // поток для записи назван, открыт
file_OUT<<"blablabla"<<123<<endl;                    // записал в файл

ifstream file_IN(filename,ios::out); // a поток для чтения назван, открыт
file_in>>item>>chislo;                              //в какие - нибудь переменные записал     


И зачем мурыжить, умные - молодцы. Я зато дурак - и мне не стыдно.
А почему, да все просто дорогие. В этом несправедливость жизни и заключается
что умным приходится общаться с дураками, а дуракам везет - они общаются с умными.

Я просил помощи, даже с наступающим поздравил, а мне давай наставления читать.
Спасибо.
PM MAIL ICQ   Вверх
mes
Дата 29.12.2008, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Iganga @  29.12.2008,  14:12 Найти цитируемый пост)
Есть ли в данном мною коде критические ошибки, из-за которых
программа может не работат

а то что файл для записи открыт на чтение разве не ошибка?

Цитата(Iganga @  29.12.2008,  14:12 Найти цитируемый пост)
Я просил помощи, даже с наступающим поздравил

и в течении часа получили ответ. xvr показал Вам на ошибку. 

Синхронизируйте тип потока и способ его открытия:
ofstream и ios::оut // для записи
ifstream и ios::in // для чтения

Цитата(Iganga @  29.12.2008,  14:12 Найти цитируемый пост)
 а мне давай наставления читать.

Да ?! a я ничего кроме советов по исправлению ошибки не нашел.


Цитата(Iganga @  29.12.2008,  14:12 Найти цитируемый пост)
И зачем мурыжить, умные - молодцы. Я зато дурак - и мне не стыдно.
А почему, да все просто дорогие. В этом несправедливость жизни и заключается
что умным приходится общаться с дураками, а дуракам везет - они общаются с умными.

а немного подумать, посмотреть на свой код и связать с   высказываниями в форуме трудно ?
И тогда не придется Вам никого  мурыжить.


Это сообщение отредактировал(а) mes - 29.12.2008, 14:50


--------------------
PM MAIL WWW   Вверх
mrbrooks
Дата 29.12.2008, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



Iganga, не надо нервничать. юзай поиск. 
PM MAIL   Вверх
Iganga
Дата 29.12.2008, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 3.12.2007

Репутация: нет
Всего: 1



Нет, что вы я не конфликтую, и не нервничаю.
Это своего рода амортизация, в психологии есть такое понятие)))
Бывает со всеми - паримся иль еще что.

Я думаю тему можно закрыть. 
Прошу прощения у всех, желаю всем прекрасно отпраздновать!!!

И пусть кризис обойдет нас стороной.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1024 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.