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

Работа с файлами. Неверный вывод. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Объясните прогу http://www.cyberforum.ru/cpp-beginners/thread593084.html
Объясните действие проги, а то препод на паре дала ее и толком ничего не растолковала #include <fstream.h> #include <iostream.h> #include <stdio.h> #include <windows.h> struct FAIL { char a ;int k; };
C++ Класс рисующий несколько элипсов нужно написать класс рисующий несколько элипсов и при помощи клавиатуры чтобы можно было их перемещать по экрану....если кто знает или может напишите пжлст( и добавьте коменты по возможности)......заранее благодарю http://www.cyberforum.ru/cpp-beginners/thread593067.html
C++ Рекуроентные нейронные сети. РНС Элмана
Пишу рекуррентную сеть для распознавания хаотического (детерменированного) временного ряда (к примеру ряд Энонна), но это не так важно. Проблем в том, что уже переписываю третий раз, а видимо делаю какие-то ошибки в самом алгоритме обучения или распространения образа и обратного распространения ошибки. Использую метод скользящего окна, модифицирую по методу градиентного спуска и обучаю по...
C++ Прокомментировать код
Может кто нибудь помочь с комментариями просто очень надо) // x.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include "stdafx.h" #include "iostream" using namespace std; class massiv {public:
C++ Вычисление объема цилиндра http://www.cyberforum.ru/cpp-beginners/thread593029.html
// x.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" // Вычисление объема цилиндра #include <stdio.h> #include <conio.h> #include <locale.h> #define PI 3,1415926 fioat v(float r, float h)
C++ Функция для обработки строк Написать функцию, возвращающую самое длинное слово в строке. подробнее

Показать сообщение отдельно
intnower
0 / 0 / 0
Регистрация: 12.01.2012
Сообщений: 68
02.06.2012, 14:46  [ТС]     Работа с файлами. Неверный вывод.
Изменений особых нету.. после того как убрал список.. ):
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
138
139
140
141
142
143
#include <iostream>
#include <conio.h>
#include <string.h>
#include <windows.h>
using namespace std;
void loadLib(); 
void saveLib();
char *filename="txt.txt";
struct language //структура ЯЗЫК
    {
        char name[30], lang[30];
        int day, month, year;
    };
 int nCount; // переменная для хранения количества человек
 
 //функция отображения меню
 
 void showMenu ()
{
    cout << "Выберете действие:" << endl << endl;
    cout << "1. Ввести элементы списка" << endl;
    cout << "2. Вывести список на экран" << endl;
    cout << "3. Вывести клиентов с заданным языком" << endl;
    cout << "4. Отстортировать список клиентов по возрастам" << endl;
    cout << "5. Удалить клиента" << endl;
    cout << "6. Выйти" << endl;
}
 
 //начальная инициализация файла библиотеки
 
 void initLib ()
{
    FILE *fp;
    fp = fopen (filename,"r");
    if (fp == NULL) //если файл не существует
    {
        nCount = 0;
        fp = fopen (filename,"w");  //создаем его
        if (fp == NULL)
            {
                cout << "Ошибка создания файла библиотеки. Программа будет закрыта!";
                _getch ();
                exit (1);
            }
        fwrite (&nCount, sizeof(int), 1, fp);   //заносим в начало нового файла, количество клиентов в нем - 0
    }
 
    else
        fread (&nCount, sizeof (nCount), 1, fp); //из существующего файла считываем количество клиентов
    fclose (fp);
}
 
 //функция, отображающая клиентов из файла библиотеки
 
 void showLib()
{ 
    int i;
    language b;
    FILE *fp;
    cout << endl << "Список клиентов в библиотеке:" << endl;
    if (nCount == 0) cout << "В списке нет клиентов";
    else
        {   
            fp = fopen (filename,"r");
            if (fp == NULL) cout << "Ошибка чтения данных из файла";
            else
                {
                    fseek(fp, sizeof(int), SEEK_SET); //пропускаем целое число количество клиентов в начале файла
                    for(i=0; i<nCount; i++) //перебираем всех клиентов из файла
                        {
                            fread (&b, sizeof(language), 1, fp);
                            cout << i+1 << ") " << b.name << "  " << b.lang << " ЯЗЫК  " << b.day << "." << b.month << "." << b.year << "." << endl;
                        }
                    fclose (fp);
                }
        }
     cout << endl;
}
 
 //функция добавления нового клиента в конец файла
 
 void addClient()
{   FILE *fp;
    language b;
  char ch;
  fp=fopen(filename,"r+");
 
   do
    { //вводим информацию об очередной книге
      system("cls"); 
      cin.sync();
      cout<<"Введите sданные о клиенте."<<endl;
      cout<<"Фамилия: \t" ; cin.getline(b.name, 29);
      cout<<"Язык: \t"; cin.getline(b.lang, 29);
      cout<<"День: \t"; cin>>b.day;
      cout<<"Месяц: \t"; cin>>b.month;
      cout<<"Год: \t"; cin>>b.year;
      nCount++;
      //заносим информацию об очередной книге в конец файла
      fseek(fp,0,SEEK_END);
      fwrite(&b, sizeof(language), 1, fp);
      //заносим информацию о количестве книг в начало файла
      fseek(fp,0,SEEK_SET);
      fwrite(&nCount, sizeof(int), 1, fp);
      cout<<"\nВвести данные о еще одной книге (д/н)?";
      ch=_getche();
    }
   while(ch=='Д' || ch=='д'); //можно ввести данные о нескольких книгах
   fclose(fp);
   cout<<endl;
  }
   
 
int main()
{
    SetConsoleCP(1251);  //Устанавливаем кодировку для ввода
    SetConsoleOutputCP (1251); //Устанавливаем кодировку для вывода
    setlocale (LC_ALL, "Russian");
 
    char ch='0';
    initLib ();  
    showMenu ();    //выводим меню
    ch=_getch ();
    while (ch!='6')
    {
        
         switch (ch)     //в зависимости от выбора пользователя вызываем функцию
        {
            case '1': addClient(); break;
            case '2': showLib(); break;
            //case '3': findClient(1); break;
            //case '4': sortLib(); break;
            //case '5': delBook(); break;
            default: cout << "Неверный ввод!!!" << endl;
        }
        cout << "Нажмите любую клавишу ...";
        _getch ();
        system ("cls"); 
        showMenu ();      //выводим меню
        ch=_getch ();
    }
    return 0;
}

Вот так выглядит код..
у меня изначально пустой файл.. Я в него ввожу данные. Ввел данные о двух клиентах и вот результат, когда Я привожу в действие функцию showLib:





а в файле txt.txt записывается вот это: 
ов rњщ( I µr`TїrШщ( (“јr Немецкий (2&єrм’јr 1 ¬щ(  И Нров ’јrэ I µr`TїrPэ (“јr Немецкий 2&єrм’јr 1 $э   Л
Помогите, пожалуйста!
Миниатюры
Работа с файлами. Неверный вывод.  
 
Текущее время: 02:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru