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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтение файла, не работает программа 
V
    Опции темы
ColdSpirit
Дата 15.3.2012, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{    
    char buff[5];
    vector<string> s;
    ifstream infile;
    infile.open("1.txt");
    while(1){
        infile.getline(buff,sizeof(buff));
        if (infile.eof()) break;
        s.push_back(buff);
    }
    
    //sort(s.begin(),s.end());
    for (int i=0 ; i<s.size() ; i++)
        cout << s[i] << endl;
    infile.close();

    _gettch();
    return 0;
}

Скатал код с учебника, ошибки убрал, компилируется, но программа почему-то застревает на цикле while(1){...}, и забивает в s пустые строки.
В отладчике пишет: infile    {_Filebuffer={...} } - хз как должно быть, но походу он вообще не открывается, раз  {...}.
Файлу давал и полный путь ("D:\1.txt"), и клал файл рядом с программой - ничего)
В файле написана абракадабра типа "adasfdfafa"
PM MAIL   Вверх
ambler
Дата 15.3.2012, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

int main()
{
    char buff[1024];
    vector<string> s;
    ifstream infile;

    memset(buff, 0, sizeof(buff));
    infile.open("d:\\1.txt");
    if (infile.is_open())
    {
        while(!infile.eof())
        {
            infile.getline(buff, sizeof(buff));
            if (infile.fail())
            {
                cout << "error read line" << endl;
                break;
            }
            s.push_back(buff);
        }
    }
    else
    {
        cout << "can't open file " << endl;
    }
    infile.close();

    //sort(s.begin(),s.end());
    for (int i=0 ; i<s.size() ; i++)
        cout << s[i] << endl;


    return 0;
}


http://www.cplusplus.com/reference/iostream/istream/getline/
Цитата

n
    Maximum number of characters to store (including the terminating null character).
    This is an integer value of type streamsize.
    If the function stops reading because this size is reached, the failbit internal flag is set.



Цитата

 В файле написана абракадабра типа "adasfdfafa" 

Размер буфера очень маленький, поэтому строка туда не помещается, из-за этого цикл выполняется бесконечно долго)


Это сообщение отредактировал(а) ambler - 15.3.2012, 18:17
PM MAIL   Вверх
ColdSpirit
Дата 15.3.2012, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ну буфер был [80], я уменьшил до пяти, непомню зачем))
А ошибку определил, оказывается путь, скопированный из эксплорера "D:\1.txt", программа не понимала, ей нужно было "D:\\1.txt"

ambler, спасибо за помощь  smile

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

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

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

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

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


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

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


 




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


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

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