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

Не выводит коректно данные из файла - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не работает EOF (end-of-file) http://www.cyberforum.ru/cpp-beginners/thread742492.html
EOF (end-of-line) не работает в условии завершения цикла. Вместо него работает -1. Если ввести -1 то цикл прекрасно завершиться, но если ввести EOF (<ctrl> Z) то цикл зависает и бесконечно выводит...
C++ фейд для картинки Добрый вечер! Помогите пожалуйста разобраться с задачей. Нужно осуществить переход одной картинки в другую, записать это в видео. с помощью библиотеки OpenCV. код на с++ (Желательно с объяснением.... http://www.cyberforum.ru/cpp-beginners/thread742481.html
C++ Создать класс КНИГА с такими полями в защищенной части: значення_УДК, автор, название, издательство, год издания.
Здраствуйте) Нужна помощь, а то незнаю как сделать даное задание! Создать класс КНИГА с такими полями в защищенной части: значення_УДК, автор, название, издательство, год издания. 1) Определить...
C++ Есть ли в с++ готовая функция преобразующая строку в массив?
Доброго времени суток! Есть ли в с++ готовая функция преобразующая строку в массив, как в php str_split() ?
C++ Описать структуру с именем NOTE http://www.cyberforum.ru/cpp-beginners/thread742416.html
1. Описать структуру с именем NOTE, содержащую следующие поля: • NAME — фамилия, имя; • TELE — номер телефона; • BDAY — день рождения (массив из трех чисел). 2. Написать программу, выполняющую...
C++ Штирлиц!Работа со стеком #include <iostream> #include <vector> using namespace std; int main(void) { vector<char> V; char ch; cin>>ch; V.push_back(ch); while(cin>>ch) подробнее

Показать сообщение отдельно
Kiragaz
2 / 2 / 0
Регистрация: 18.12.2012
Сообщений: 13

Не выводит коректно данные из файла - C++

22.12.2012, 22:20. Просмотров 178. Ответов 0
Метки (Все метки)

Помогите, пожалуйста разобраться с проблемой. В C++Builder 6 худо бедно работает, правда с одним предупреждением, перешёл на VS 2010, и появилась проблема с выводом на экран из файла. Выводит только первую строку, а дальше пустота. хотя открываешь файл там всё записано как положено.


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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include <iostream>
#include <fstream>
#include <ostream>
#include <windows.h>
 
 
using namespace std;
 
 
void datainput();
void dataadd();
void dataoutput();
void exit();
struct List
{
    char Name[20];
    char Bookname[20];
        double  Imdate;
};
List Book[100];
 int k,i;
 int m,j;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
    int v;
 
    do
    {
        cout << endl <<
                     "Главное меню:"<< endl <<
                     "1. Ввод данных"<< endl <<
                     "2. Добовление данных"<< endl <<
                     "3. Вывод данных на экран"<< endl <<
                     "4. Выход из программы"<< endl <<
                     "Выберите необходимый пункт меню: ";
        cin >> v;
 
        switch (v)
        {
        case 1:
            datainput();
            break;
        case 2:
            dataadd();
            break;
        case 3:
            dataoutput();
            break;
        case 4:
            exit();
            break;
        default:cout << "Введён не верный пункт меню, попробуйте еще раз" << endl << endl;
            continue;
        }
    }
    while (v != 5);
 
    return 0;
}
 
void datainput()
{
  puts("Какое кол-во книг хотите добавить?");
           k=0;
           cin>>k;
    system ("cls");
    for (i = 0; i < k; i++) {
        cout<<"Введите автора "<<i+1<<"-ой книги:";
                cin>>Book[i].Name;
                cout<<"Введите название "<<i+1<<"-ой книги:";
        cin>>Book[i].Bookname;
        cout<<"Введите год издания "<<i+1<<"-ой книги:";
        cin>>Book[i].Imdate;
             }
 
    fstream file ("C:\\TestFile.txt",ios::out);
    file<<"\n\n\tФамилия\t\t\tНазвание\t\t\tГод издания\n";
    for (i = 0; i < k; i++) {
        file<<i+1<<"\t"<<Book[i].Name;
        file<<"\t\t\t"<<Book[i].Bookname;
        file<<"\t\t\t"<<Book[i].Imdate<<"\n";
    }
    system ("cls");
    cout<<"Файл успешно сохранен.\n\n";
 
 }
 
void dataadd()
{
 
   puts("Какое кол-во книг хотите добавить?");
           m=0;
           cin>>m;
    system ("cls");
        j=k+m;
 for (i = k; i < j; i++) {
                cout<<"Введите автора "<<i+1<<"-ой книги:";
                cin>>Book[i].Name;
                cout<<"Введите название "<<i+1<<"-ой книги:";
                cin>>Book[i].Bookname;
                cout<<"Введите год издания "<<i+1<<"-ой книги:";
        cin>>Book[i].Imdate;
}
 
        ofstream file ("C:\\TestFile.txt",ios_base::app);
                for (i = k; i < j; i++) {
        file<<i+1<<"\t"<<Book[i].Name;
        file<<"\t\t\t"<<Book[i].Bookname;
        file<<"\t\t\t"<<Book[i].Imdate<<"\n";
    }
        file.close();
    system ("cls");
    cout<<"Файл успешно сохранен.\n\n";
 
 }
 
 void dataoutput()
{
 ifstream file ("C:\\TestFile.txt",ios::in);
     system ("cls");
     for (i = 0; i < j; i++) {
        file>>Book[i].Name;
                cout<<i+1<<"\t"<<Book[i].Name;
        file>>Book[i].Bookname;
                cout<<"\t\t\t"<<Book[i].Bookname;
        file>>Book[i].Imdate;
                cout<<"\t\t\t"<<Book[i].Imdate<<"\n";
               }
}
 
void exit()
{
    system ("cls");
    cout << endl << "Выход..." << endl;
}
Проблема где то вот в этой части

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void dataoutput()
{
 ifstream file ("C:\\TestFile.txt",ios::in);
     system ("cls");
     for (i = 0; i < j; i++) {
        file>>Book[i].Name;
                cout<<i+1<<"\t"<<Book[i].Name;
        file>>Book[i].Bookname;
                cout<<"\t\t\t"<<Book[i].Bookname;
        file>>Book[i].Imdate;
                cout<<"\t\t\t"<<Book[i].Imdate<<"\n";
               }
}
P.S. И подскажите если не сложно как реализовать проверку, что бы избежать повторяемости в записях. Желательно с небольшим примером.
Заранее большое спасибо за помощь!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru