Форум программистов, компьютерный форум 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
01.06.2012, 00:38     Работа с файлами. Неверный вывод.
Всем доброго времени суток!
Ребят, нужна ваша помощь!

В общем, создаю файл. Потом через функцию addClient добавления нового клиента в конец файла создаю структуру. Ввожу фамилию, язык, день, месяц, год. Потом вывожу все, что ввёл в функции showLib. и у меня выводит нечто очень странное: много букв М и какие-то непонятные цифры.. Помогите, пожалуйста, в чем дело?
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
#include <iostream>
#include <conio.h>
#include <string.h>
#include <windows.h>
using namespace std;
void loadLib(); 
void saveLib();
char *filename="C:/games/arar.txt";
struct language //структура ЯЗЫК
    {
        char name[30], lang[30];
        int day, month, year;
        language *next;
    };
 language *head, *tmp, *current; //указателя для организации односвязного списка языков
 int nCount; // переменная для хранения количества человек
 
//начальная инициализация файла библиотеки
 
 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");
  if (fp == NULL)
    cout<<"Ошибка чтения данных из файла";
  else
   {
   do
    { //вводим информацию об очередном клиенте
      system ("cls"); 
      cin.sync ();
      cout << "Введите данные о клиенте." << endl;
      cout << "Фамилия:" << '\t'; cin.getline (b.name, 29);
      cout << "Изучающий язык:" << '\t'; cin.getline (b.lang, 29);
      cout << "Дата рождения:" << endl;
      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Ввести данные о еще одном клиенте (д/н)?" << endl;
      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;
            default: cout << "Неверный ввод!!!" << endl;
        }
        cout << "Нажмите любую клавишу ...";
        _getch ();
        system ("cls"); 
        showMenu ();      //выводим меню
        ch=_getch ();
    }
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru