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

Вывод из файла - C++

Восстановить пароль Регистрация
 
 
Vashtanerada
1 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 142
12.06.2014, 23:07     Вывод из файла #1
Доброго времени суток, уважаемые форумчане!!!
Я вот с какой проблемой обращаюсь к вам:
Имеется программа записи данных в файл (Запись происходит корректно, в файле вводимые данные отображаются) нужно написать программу для вывода данных из файла. Функция имеется, при запуске программы ошибок не выдает, зато выдает такую вот гадость:
Вывод из файла
Будьте добры, помогите разобраться в чем причина данного безобразия.
Функция считывания из файла:
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
33
34
35
36
void massiv::loadBD(string file)
    {
        cout<<"Чтение файла:"<<endl;
        delete data;
        length=0;
        data=new worker*[10];
        worker *c;
        ifstream input("../worker.txt",ios::out);
        if(!input) cout<<"Файл не существует!"<<endl;
        else
        {
            int i=0;
            while(input.eof())
            {
                string age;
                string ii;
                int rr;
                input>>age;
                input>>ii;
                input>>rr;
                c=new worker(age, ii, rr);
                data[i]=c;
                i=i++;
                length++;
            }
            //Считаем  байты
            struct stat file_stat;
            stat("../worker.txt", &file_stat);
            int fileSizeBytes =file_stat.st_size;
 
            cout<<"Данные прочитаны!"<<endl;
            cout<<"Считано "<<length<<" Объектов "<<endl;
            cout<<"Размер файла "<<fileSizeBytes<<" байт"<<endl<<endl;
            input.close();
        }
    }
Функция вывода на экран:
C++
1
2
3
4
5
6
7
8
9
10
void massiv::show()
{
    //cout<<"Put="<<length<<" Capacity="<<size<<endl;
 
    for(int i=0; i < length; i++)
    {
        cout<<"<Элемент #"<<i+1<< ">"<<endl;
        data[i]->showcase();
    }
}
где
C++
1
2
3
4
5
6
7
    void showcase()
    { //Конструктор без параметров
        cout<<"Имя: "<<name<<endl;
        cout<<"Должность: "<<position<<endl;
        cout<<"Возраст: "<<age<<endl;
        cout<<endl;
    }
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2014, 23:07     Вывод из файла
Посмотрите здесь:

вывод из файла C++
Вывод файла C++
C++ вывод из файла
C++ Вывод из файла
C++ вывод из файла
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.06.2014, 01:34     Вывод из файла #2
Содержимое файла покажите, и конструктор worker.
Vashtanerada
1 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 142
13.06.2014, 09:23  [ТС]     Вывод из файла #3
Содержимое файла:
Иван Администратор 24
Андрей Программист 21
Александр Техник 24
Сергей Инженер 50
Николай Программист 16
Конструктор worker^
C++
1
2
3
4
5
6
worker(string Name, string Positoin, int Age)
    { //Конструктор с параметрами
        name=Name;
        position=Positoin;
        age=Age;
    }
Функция show() работает нормально, она у меня используется в программе записи в файл, для вывода того, что записывается. И работает нормально.
MaKaRoN IV
 Аватар для MaKaRoN IV
15 / 15 / 6
Регистрация: 20.04.2013
Сообщений: 64
13.06.2014, 12:03     Вывод из файла #4
Может стоит на кодировку посмотреть?
Попробуйте изменить кодировку текстового файла, а потом снова запустите программу: запишите и прочитайте.
Всякое бывает. Скажем такие кодировки: OEM 866, Windows 1251, ну и UTF-8, KOI8.
У меня такая проблема решалась, когда я использовал формат OEM 866, в Notepad++ легко менять кодировки.
Можно еще поразмыслить так, напишите данные на английском, если вывод английских букв будет нормальный, значит проблема в кодировке, если нет, то проблема в коде.
Там дальше посмотрим, что можно сделать.

Добавлено через 7 минут
Дополнительные материалы по чтению из файла:
1. http://hashcode.ru/questions/13782/c...-%D0%B2-%D1%81
2. http://lord-n.narod.ru/download/book.../14/strtok.htm
Vashtanerada
1 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 142
13.06.2014, 12:05  [ТС]     Вывод из файла #5
Цитата Сообщение от MaKaRoN IV Посмотреть сообщение
напишите данные на английском, если вывод английских букв будет нормальный, значит проблема в кодировке, если нет, то проблема в коде.
С английским текстом точно такая же беда.
MaKaRoN IV
 Аватар для MaKaRoN IV
15 / 15 / 6
Регистрация: 20.04.2013
Сообщений: 64
13.06.2014, 12:09     Вывод из файла #6
3. http://cppstudio.com/post/747/

Добавлено через 3 минуты
Скиньте пожалуйста весь код, я попробую разобраться.

Добавлено через 17 секунд
Скиньте пожалуйста весь код, я попробую разобраться.
Vashtanerada
1 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 142
13.06.2014, 12:11  [ТС]     Вывод из файла #7
1 - программа записи в файл
2 - программа чтения из файла
1.RAR
2.RAR
MaKaRoN IV
 Аватар для MaKaRoN IV
15 / 15 / 6
Регистрация: 20.04.2013
Сообщений: 64
13.06.2014, 12:23     Вывод из файла #8
Пока посмотрите на объявление переменных, возможно где-то с указателями напутали. С самого начала. Возможно лишний указатель или наоборот не хватает. Хотя, я думаю, среда разработки предупредила бы, но все же поглядите.
Возможно проще будет считать strtok и сразу выводить.
Vashtanerada
1 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 142
13.06.2014, 12:34  [ТС]     Вывод из файла #9
Цитата Сообщение от MaKaRoN IV Посмотреть сообщение
Пока посмотрите на объявление переменных, возможно где-то с указателями напутали.
Вроде бы все впорядке
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.06.2014, 16:36     Вывод из файла #10
Цитата Сообщение от Vashtanerada Посмотреть сообщение
2 - программа чтения из файла
Почему там, в function.cpp, #include "function.h" криво сделан? Код не компилируется.
Vashtanerada
1 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 142
13.06.2014, 16:53  [ТС]     Вывод из файла #11
дак там в function.h в принципе кода нет, только несколько директив и все
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.06.2014, 17:07     Вывод из файла #12
Цитата Сообщение от Vashtanerada Посмотреть сообщение
дак там в function.h в принципе кода нет, только несколько директив и все
Так и что? Компилятор хедер не находит и компиляция не проходит. Хотите сказать, что у вас компилируется?
Проверил я программу чтения из файла, содержимое которого было выложено в 3-ем посте. Работает нормально (проверял в 10-й студии). Единственное, что изменил: файл положил в папку проекта, везде в коде изменил "../worker.txt" на "worker.txt", убрал лишние папки, все файла в папке проекта. Результат на скрине.
Миниатюры
Вывод из файла  
Vashtanerada
1 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 142
13.06.2014, 17:10  [ТС]     Вывод из файла #13
Цитата Сообщение от alsav22 Посмотреть сообщение
Хотите сказать, что у вас компилируется?
у меня компиляруется и запускается, разве что выдает то, что в первом сообщении показано
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.06.2014, 17:20     Вывод из файла #14
Цитата Сообщение от Vashtanerada Посмотреть сообщение
у меня компиляруется
Отнесём к чудесам, которых в программировании не бывает (скрин компиляции прилагаю). Забыл написать, что файл создавал вручную, кодировка ANSI.
Миниатюры
Вывод из файла  
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.06.2014, 17:27     Вывод из файла #15
Когда файлы, из лишних папок, переносил в папку проекта, то, естественно, подключение хедеров изменил под это.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.06.2014, 19:09     Вывод из файла #16
Сообщение было отмечено автором темы, экспертом или модератором как ответ
setlocale(0,"rus") разве в Code Blocks работает? Заменил, в программе чтения из файла, setlocale(0,"rus") на:
C++
1
2
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
В настройках редактора среды стоит: WINDOWS-1251.
В loadBD(), вместо i = i++:
C++
1
++i;
Файл создавался вручную. Результат работы на скрине.
Миниатюры
Вывод из файла  
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.06.2014, 19:19     Вывод из файла #17
Такая же конструкция: i = i++ есть и в find(), о чём компилятор предупреждения выдаёт:
warning: operation on 'i' may be undefined [-Wsequence-point]|
Студия, сорее всего, по другому такое обрабатывает, поэтому в ней работает нормально.
Vashtanerada
1 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 142
13.06.2014, 20:31  [ТС]     Вывод из файла #18
Загнала программу в Visual Studia Запускается без ошибок, но выдает, что файл пуст

Добавлено через 6 минут
Сначала ругался на string
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.06.2014, 20:35     Вывод из файла #19
Цитата Сообщение от Vashtanerada Посмотреть сообщение
Загнала программу в Visual Studia Запускается без ошибок, но выдает, что файл пуст
Это для кого всё пишется (16 пост)?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2014, 20:49     Вывод из файла
Еще ссылки по теме:

Вывод из файла C++
Вывод из файла C++
Вывод из файла С++ C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Vashtanerada
1 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 142
13.06.2014, 20:49  [ТС]     Вывод из файла #20
Цитата Сообщение от alsav22 Посмотреть сообщение
Это для кого всё пишется (16 пост)?
Заменила, то что вы сказали, но...
Вывод из файла
И я не понимаю, что не так
Именно по этому попробовала через Стгдию
Yandex
Объявления
13.06.2014, 20:49     Вывод из файла
Ответ Создать тему
Опции темы

Текущее время: 06:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru