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

"Бесконечное" считывание из файла. ifstream; - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ В массиве 8 на 8 расставить по убыванию в столбцах элементы расположенные ниже побочной диагонали. http://www.cyberforum.ru/cpp-beginners/thread832329.html
В массиве 8 на 8 расставить по убыванию в столбцах элементы расположенные ниже побочной диагонали.(С++)
C++ Алгоритм шифрования DES Требуется написать программу реализующую симметричный алгоритм шифрования DES. В Инете много облазил сайтов, но так и не понял, какой тип данных шифруется - текст или любая информация? Не совсем понятно как будет видно что данные зашифрованы, вообще не знаю с чего начать писать прогу. Посоветуйте, пожалуйста, что-нибудь) http://www.cyberforum.ru/cpp-beginners/thread832316.html
C++ Добавить еще в программу время и условный оператор
Составить универсальную программу для решения математической задачи, используя разветвляющийся алгоритм. Подобрать самостоятельно три тестовых примера для допустимых, два – для пограничных и три - для недопустимых значений входных параметров. Результаты вычислений вывести на экран и в файл. Программа должна: • Выводить фамилию студента, группу, вариант и условия задачи; • запрашивать и...
C++ очень нужен скриншот результата выполнения программы
#include "stdafx.h" #include <iostream.h> #include <math.h> using namespace std; double a={{7, 1, 3, 2}, {0, 5, 4, 0}, {0, 1, 18, -3}, {1, 2, -7, 15}}; double b={2, 3, 4, 5}; double x={0, 0, 0, 0};
C++ Из файла 1 переписать все в файл 2 с сортировкой http://www.cyberforum.ru/cpp-beginners/thread832289.html
Добрый день. Нужно помощь в допиливании программы. Итак. 1) Имеется заполненный массив с сотрудниками, записанный в файл "File1.dat" 2) Нужно этот массив который в файле 1 переписать в файл 2 с сортировкой по алфавиту. Сказали, что нужно заново открыть файл, вынуть от туда массив, отсортировать его и заново записать в файл 2. Вот часть первой программы.. как сделать остальное .... #include...
C++ Создать блоксхему для программы Помогите составит блок схему для программы. За ранее спасибо. #include<iostream> #include<stdio.h> int main() { int a,b,c,d; printf("vvedi a,b ->"); scanf("%d %d",&a,&b); { подробнее

Показать сообщение отдельно
Delix
0 / 0 / 0
Регистрация: 29.03.2013
Сообщений: 22
09.04.2013, 11:07     "Бесконечное" считывание из файла. ifstream;
Суть такая, функция записывает в файл данные из моего списка, на каждую строку.
вот эта функция:
C++
1
2
3
4
5
6
7
8
9
10
11
    void outputFile(){
    Node<Anketa> *temp = head;
    ofstream file_obj("mylist.DAT");
    for(int i = 0; i < l; i++){
        file_obj<<temp->t.name<<endl
                <<temp->t.family<<endl
                <<temp->t.brith_Date<<endl
                <<temp->t.tel<<endl;
        temp=temp->next;
    }
    file_obj.close();
Допустим ввел туда вот эти данные(текст файла):
Кликните здесь для просмотра всего текста
Splinter
RatNinja
01_01_1960
00
Leonardo
Tutrle
20_01_1980
01
Raphaelo
Tutle
20_01_1980
02
Donatello
Turtle
20_01_1980
03
Mikelangello
Turtle
20_01_1980
04

потом хочу считать с этого файла вот этой функцией и записать в свой список:
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
25
26
27
28
29
30
31
32
    void inputFile(){
    Node<Anketa> *temp = new Node<Anketa>;
    ifstream input_fl("mylist.DAT");
    char line[20];
    while(input_fl.eof())
    {
        input_fl.getline(temp->t.name, sizeof(temp->t.name));
        input_fl.getline(temp->t.family, sizeof(temp->t.family));
        input_fl.getline(temp->t.brith_Date, sizeof(temp->t.brith_Date));
        input_fl.getline(temp->t.tel, sizeof(temp->t.tel));
        
        //Проверка флагов
        bool a = input_fl.bad();
        bool b = input_fl.good();
        bool c = input_fl.fail();
        bool d = input_fl.eof();
        
        //Добавление в конец списка
        if (!head){
            temp->next = tail;
            head = temp;
            temp->back = NULL;
        }
        else {
            temp->next = tail->next;
            temp->back = tail;
            tail->next = temp;
        }
        tail = temp;  
        l++;
    }
}
getline работает нормально, дебаггер пишет, что считываются без проблем, и на последней строке, имеющая запись, цикл дальше не идёт...
Во время прохождения цикла, перменные имеют следующие значения:
C++
1
2
3
4
        bool a = input_fl.bad();    //false
        bool b = input_fl.good();    //true
        bool c = input_fl.fail();    //false
        bool d = input_fl.eof();    //false
Когда проходит все строки, цикл заканчивается:

C++
1
2
3
4
        bool a = input_fl.bad();    //false
        bool b = input_fl.good();    //false
        bool c = input_fl.fail();    //true
        bool d = input_fl.eof();    //false
Почему он не находит конец файла, но суть основной проблемы в том, что потом при попытке вывести все элементы списка, выводит "бесконечно пустой", как буд-то он считывал дальше пустые строки. Пробовал делать цикл с условием good() и fail(), такая же лабуда. Буду рад вашей помощи, Спасибо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru