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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
viktorrrr
43 / 43 / 1
Регистрация: 11.02.2010
Сообщений: 361
#1

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

19.07.2011, 16:49. Просмотров 1227. Ответов 25
Метки нет (Все метки)

Вообщем, кое-как сделал запись в файл. Теперь как бы вывести то, что уже записал? Неправильно программа работает.

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include<iostream>
#include<fstream>
 
 
using namespace std;
 
struct Bibliotek{
    char Name[30];
    char Family[30];
    char Name_of_Book[50];
    unsigned long int amount;
};
 
void Record();
void Output();
void Record(){
    Bibliotek *t=new Bibliotek;
    
    ofstream File("bibliotek.dat", ios::app);
    if(!File){
        cerr<<"Файл не может быть открыт";
        exit(1);
    }
    cout<<"Введите фамилию автора"<<endl;cin>>t->Family;
        cout<<"Введите имя автора"<<endl;cin>>t->Name;
        cout<<"Введите название книги"<<endl;cin>>t->Name_of_Book;
        cout<<"Введите количество экземпляров"<<endl;cin>>t->amount;
        File<<t->Family<<t->Name<<t->Name_of_Book<<t->amount;
    File.close();
}
 
void Output(){
    Bibliotek *tmp=new Bibliotek;
    ifstream File2("bibliotek.dat", ios::in);
    if(!File2){
        cerr<<"Проблемы с файлом";
        exit(1);
    }
    while(!File2.eof()){
        File2.getline(tmp->Family,30);
        File2.getline(tmp->Name,30);
        File2.getline(tmp->Name_of_Book,50);
        cout<<tmp->amount;
    }
    
    File2.close();
}
int main()
{
 
    setlocale(LC_ALL,"Russian");
    char i;
    do{
        cout<<"введите 1 чтобы добавить в базу новую книгу"<<endl;
        cout<<"Нажмите 2, чтобы вывести базу"<<endl;
        cout<<"Нажмите 0, чтобы выйти из программы"<<endl;
        cin>>i;
        switch(i){
        case '1':
    Record();
    break;
        case '2':
            Output();
            break;
        
        }
    }while(i!='0');
    return 0;
}
Добавлено через 2 часа 51 минуту
Пажаааалстааа!!! Обратите на меня внимание!!)))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2011, 16:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод файла (C++):

Вывод из файла - C++
Здравствуйте написал программу ввода/вывода из файла, но когда выводит из файла на экран, почему-то последняя строчка дублируется в чем...

вывод из файла - C++
С текстового файла считать последовательность записей, содержащих данные о книге: &lt;Автор&gt;, &lt;Название книги&gt;, &lt;Год издания&gt;, &lt;Количество...

Вывод из файла С++ - C++
Как из текстового файла содержащего кучу строк вывести 5 строк

вывод из файла - C++
подскажите как мне считать сколько элементов(чисел) расположено в данной строке, и если их больше некоторого значения перевести курсор на...

вывод из файла - C++
в текстовом файле лежат 2 матрицы в таком виде размерности 7*7 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 1 1 0 0...

Вывод из файла - C++
Доброго времени суток, уважаемые форумчане!!! Я вот с какой проблемой обращаюсь к вам: Имеется программа записи данных в файл (Запись...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
-=ЮрА=-
Заблокирован
Автор FAQ
19.07.2011, 19:41 #16
Асикс, я не вопросом на вопрос отвечаю, а столкнулся с проблеммой которую в сжатый срок обойти не могу, поэтому использую другие методы и приёмы, а вот что можешь ты???Смотрю твои посты и вижу в них один флуд...
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
19.07.2011, 19:44 #17
-=ЮрА=-, Я задал тебе вопрос, читай еще раз пост #12, не хочешь отвечать -- так и напиши, а не увиливай от ответа.
-=ЮрА=-
Заблокирован
Автор FAQ
19.07.2011, 19:55 #18
Мне нравиться Си доступ к файлам, и это сугубо моё личное предпочтение.
Никого ни к чему тут не призываю, а тебе настоятельно рекомендую не грубить в постах, особенно старшим...А чтобы от твоих постов была хоть какая то польза человеку приведи код с реализацией чистого С++, а не реализацией флуда!
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
19.07.2011, 20:07 #19
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
а тебе настоятельно рекомендую не грубить в постах, особенно старшим
Смешной ты...

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
приведи код с реализацией чистого С++
Прошу-с
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include<iostream>
#include<fstream>
#include <windows.h>
 
using namespace std;
 
struct Bibliotek{
        char Name[30];
        char Family[30];
        char Name_of_Book[50];
        unsigned long int amount;
};
 
void Record(fstream &File){
        Bibliotek *t=new Bibliotek;
        File.open("biblotek.dat", ios::out);
        if(!File){
                cerr<<"Файл не может быть открыт";
                exit(1);
        }
        cout<<"Введите фамилию автора"<<endl;
        cin>>t->Family;
                cout<<"Введите имя автора"<<endl;
                cin>>t->Name;
                cout<<"Введите название книги"<<endl;
                cin>>t->Name_of_Book;
                cout<<"Введите количество экземпляров"<<endl;
                cin>>t->amount;
                File<<t->Family << ' ' <<t->Name<< ' ' <<t->Name_of_Book<< ' ' <<t->amount;
        File.close();
}
 
void Output(fstream &File2){
        Bibliotek *tmp=new Bibliotek;
        File2.open("biblotek.dat", ios::in);
        if(!File2){
                cerr<<"Проблемы с файлом";
                exit(1);
        }
        while(!File2.eof()){
                File2.sync();
                File2 >> tmp->Family;
                File2 >> tmp->Name;
                File2 >> tmp->Name_of_Book;
                File2 >> tmp->amount;
        }
 
        cout << "\n\n" << tmp->Family << '\n' << tmp->Name << '\n' << tmp->Name_of_Book << '\n' << tmp->amount;
 
        File2.close();
}
int main()
{
 
        SetConsoleCP(1251);
        SetConsoleOutputCP(1251);
        fstream fs;
        char i;
        do{
                cout<<"\nвведите 1 чтобы добавить в базу новую книгу"<<endl;
                cout<<"\nНажмите 2, чтобы вывести базу"<<endl;
                cout<<"\nНажмите 0, чтобы выйти из программы"<<endl;
                cin>>i;
                switch(i){
                case '1':
        Record(fs);
        break;
                case '2':
                        Output(fs);
                        break;
 
                }
        }while(i!='0');
        return 0;
}
Добавлено через 2 минуты
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Мне нравиться Си доступ к файлам, и это сугубо моё личное предпочтение.
Ну ты же написал
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
то лучше это всё реализовать через FILE* поток
я спросил,
Цитата Сообщение от asics Посмотреть сообщение
Чем лучше ?
ты ответил

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Мне нравиться Си доступ к файлам
-- это не аргумент.

Добавлено через 1 минуту
И, что бы таких казусов больше никогда не возникало, настоятельно тебя прошу, прежде чем что-то утверждать, не имея конструктивных аргументов -- пиши IMHO
viktorrrr
43 / 43 / 1
Регистрация: 11.02.2010
Сообщений: 361
19.07.2011, 20:13  [ТС] #20
Простите за флуд. Отходил и в шоке. что здесь творится. В любом случае, спасибо!!!!_)))) Здесь лучшие люди!!))
-=ЮрА=-
Заблокирован
Автор FAQ
19.07.2011, 20:22 #21
Асикс, мои тебе замечания
1 Строка 15 и 34 утечка памяти

2 вывод лишь последней считанной записи
Код
C++
1
2
3
4
5
6
7
8
9
while(!File2.eof()){
                File2.sync();
                File2 >> tmp->Family;
                File2 >> tmp->Name;
                File2 >> tmp->Name_of_Book;
                File2 >> tmp->amount;
        }
 
        cout << "\n\n" << tmp->Family << '\n' << tmp->Name << '\n' << tmp->Name_of_Book << '\n' << tmp->amount;
3 в руссификации не указал что шрифт консоли на Lusinda Console нужно менять, как автор этой темыы об этом узнает, ты ему в мыслях об своих просчётах расскажешь???
Смешной не я, а ты в своих глупых ошибках, особенно во 2-й, хуже 1-курсника, так что уволь меня от своих замечаний
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
19.07.2011, 20:29 #22
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
1 Строка 15 и 34 утечка памяти
C++
1
Bibliotek *t=new Bibliotek;
Здесь ? Почему ?

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
2 вывод лишь последней считанной записи
Мой код подразумевает только одну запись в базу, ты ведь такой умный, мог и догадаться.

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
3 в руссификации не указал что шрифт консоли на Lusinda Console нужно менять, как автор этой темыы об этом узнает, ты ему в мыслях об своих просчётах расскажешь???
Его проблемы.
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
собенно во 2-й, хуже 1-курсника
Оно и понятно, я же только 10 клас, не не вру, 11.
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
так что уволь меня от своих замечаний
Увы, этого гарантировать немогу.
-=ЮрА=-
Заблокирован
Автор FAQ
19.07.2011, 21:04 #23
1 Ну так вод, в функции вывода необходимо организовать просмотр базы, а не последней записи, обычно база данных предполагает наличие записей отличное от одной, тут даже смешно, я думал в базе одна запись))))
2 Дальше, всё что выделено new нужно чистить delete - писать программы нужно не для загаживания оперативы, а с минимально необходимым и рациональным её использованием, тоже подучи на следующий год в 11-м классе
3 Если ты пишешь не для того чтобы помочь человеку, а просто показать что ты научился юзать консоль, то толку от тебя на форуме ноль...
Как по мне это не в какие ворота не лезит

"3 в руссификации не указал что шрифт консоли на Lusinda Console нужно менять, как автор этой темыы об этом узнает, ты ему в мыслях об своих просчётах расскажешь???
Его проблемы."
4 В дальнейшем старайся делать программы отвечающие просьбам топик стартеров, форум для этого призван. На сим пока.
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
19.07.2011, 21:13 #24
Про delete, да забыл, так как писал в спешке, в реальной программе, это, естественно, бы не случилось.
Остальное -- бред. Человек попросил сделать ему вывод из файла, я сделал, да, одну запись, но там переделать -- одна строчка кода, так что будет ему чем заняться.

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
а просто показать что ты научился юзать консоль, то толку от тебя на форуме ноль...
Ага, от тебя очень много(сарказм), пихаешь новичкам свой быдлокод, это по-твоему тру ?
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
На сим пока.
Удачи.
viktorrrr
43 / 43 / 1
Регистрация: 11.02.2010
Сообщений: 361
20.07.2011, 01:18  [ТС] #25
Жаль, что поругались(((. Хотел еще спросить, как поиск сделать)) и удаление)))
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
20.07.2011, 01:28 #26
Цитата Сообщение от viktorrrr Посмотреть сообщение
Хотел еще спросить, как поиск сделать))
При считывание базы, сравнивешь нужное поле с ключом.
Цитата Сообщение от viktorrrr Посмотреть сообщение
и удаление)))
C++
1
2
3
4
5
6
7
8
9
std::fstream fs("input.txt", std::ios::in);//Открываеш на чтение
/*
Все сожержимое заносиш в буфер(ы) с которым(и) будеш работать
*/
fs.close()//Закрываеш поток
fs.open("input.txt", std::ios::out)//и открываеш его на запись
/*
Тут заносиш в файл все, без той книжки, которую хочешь удалить.
*/
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2011, 01:28
Привет! Вот еще темы с ответами:

Вывод из файла - C++
#include &quot;stdafx.h&quot; #include &quot;iostream&quot; using namespace std; struct avia { char DepCity; char ArrCity; ...

Вывод из файла - C++
Как можно вывести все содержымое файла в переменную с пробелами , с абзацами короче со всеми символами.Я вот что пытался типа такого...

Построчный вывод файла - C++
#include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;iostream&gt; int main() { FILE *fp; char res; char...

Вывод содержания файла в с++ - C++
#include&lt;fstream.h&gt; #include&lt;math.h&gt; #include&lt;conio.h&gt; void main() {clrscr(); int v; ifstream lekcia1; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.07.2011, 01:28
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru