Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++]Структуры и файлы. Запись и чтение.


Автор: Slaya 11.5.2013, 23:59
Суть задания:
"Функции для обработки линейных структур данных (разработка, тестирование):
а)создать список, упорядоченный по возрастанию ключей; структура данных элемента: фамилия – номер телефона.; по номеру телефона звонившего абонента выдать его фамилию;
б)по заданной фамилии выдать телефоны всех однофамильцев;
в) создать список, упорядоченный по возрастанию ключей, в котором разрешены записи с одинаковыми ключами, выдать данные всех элементов по заданному ключу.
    Организовать интерфейс работы с функциями."
Функция ввода инфы в файл
Код

void Add_note(void)
{
 system("cls");
 system("color 8F");
 cout << "Введите номер" << endl;
 cin.clear();                                    //очистка ошибочного состояния потока
 cin.sync();                                    //очистка состояния буфера
 cin >> d.number;                                
 cout << "Введите фамилию" << endl;
 cin.clear();
 cin.sync();
 cin.getline(d.secondname, 15, '\n');            //чтение строки полностью
 ofstream file("spisok.txt", ios::app);            //запист в конец структуры
 if(!file) {cout<<"Файл не может быть открыт!"; exit (1);}
 file.write((char*) &d, sizeof(d));                //запись в файл структуры
 file.close();                                    //закрытие файла
 cout << "Данные успешно внесены!" << endl << "Хотите добавить еще запись?" << endl << "(1 - да. 2-нет.)" << endl;
 int choise_YesOrNo;
 while ((choise_YesOrNo = _getch()) != EOF)
 {
     switch (choise_YesOrNo)
     {
        case '1': Add_note();
        case '2': main();
        default: _getch();
        
     }
 }
}


Функция поиска по фамилии(вот она и не работает, собственно).
Код

void Search_secondname(void)
{
    system("cls");
 system("color 8F");
int vib2=0;
int k=0;
char secondname [15];
    cin.clear();                          
    cin.sync(); 
    cin.getline(secondname,15);
    ifstream file("spisok.txt",ios::in);                                               //відкриття файлу для читання
    if(!file) {cout<<"Файл не может быть открыт"; exit (1);}                            //перевірка
        file.seekg(0,ios::end);                                                            //встановлення вказівника на кінець файлу
    long long fsize=file.tellg();                                                                //пошук розміру файлу    
        file.seekg(0,ios::beg);                                                        //вказівник на початок файлу
        //Vyvod_zagolovok();
    while(fsize-file.tellg() >= sizeof(d))       
      {
                     file.read((char*) &d,sizeof (d));                                    //зчитування з файла 
                     if(strcmp(d.secondname,secondname)==0)                                    //порівняння
                        {
                              Vyvod();
                       k++;
                       
                         }
                 
      }
    if(k==0) { cout<<"Ничего не найдено\n";}
    file.close();                                                                        //закриття файлу


void Vyvod(void)
{
 cout<< endl << setiosflags(ios::left) << d.secondname << "    " <<d.number    << endl;
}

Просьба: укажите и по возможности исправьте ошибки, поделитесь, кто знает где взять, качественной информацией по этому поводу (запись в файл, форматирование вывода из файла в консоль и т.д.). Заранее спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)