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

Телефонная книга - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.83
AlexSMG
0 / 0 / 0
Регистрация: 09.04.2010
Сообщений: 14
13.04.2010, 07:34     Телефонная книга #1
В общем, ребят, мне надо сделать подобие телефонной книги.
Для записи контактов определить структуру: {Фамилия,Имя,Адрес,Номер телефона}.
Так вот, как работать со структурами я уже знаю, я могу записать структуру в массив и потом использовать её, могу сделать динамический массив структур, ну и т.д.
Проблема у меня в том, что я не могу разобраться, как записать структуру или массив структур в файл, чтоб в дальнейшем с ними можно было работать, т.е. записать в файл, прочитать из файла, вывести какую-нибудь одну запись, либо все. Поясните пожалуйста, как это можно сделать.
Заранее, огромное спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2010, 07:34     Телефонная книга
Посмотрите здесь:

C++: работа с файлами. Телефонная книга. C++
C++ Работа с файлами: телефонная книга
Телефонная книга: просмотр, поиск, добавление записей. C++
Класс Телефонная Книга C++
Не обращается к функции из класса. Проект телефонная книга C++
Телефонная книга сортировка пузырьком C++
C++ Телефонная книга: подскажите алгоритм быстрого поиска контактов
C++ Телефонная книга

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
13.04.2010, 10:56     Телефонная книга #2
Работа со структурами Си++
AlexSMG
0 / 0 / 0
Регистрация: 09.04.2010
Сообщений: 14
20.04.2010, 08:33  [ТС]     Телефонная книга #3
Спасибо конечно, что так быстро ответили, но у меня ни одна программа не запустилась...
Пользуюсь Borland C++ for DOS version 3.1

Добавлено через 1 час 34 минуты
Вот, как записать в файл я разобрался. Тут я создал динамический массив структур, с помощью которого и записываю данные в файл.
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
#include <stdio.h>
#include <conio.h>
#include <alloc.h>
 
struct NewRec
{
 char Name  [15];
 char Sname [20];
 char Pnum  [6];
};
 
main (void)
{
  clrscr ();
 int i,rec;
 char CH;
  NewRec *Arr;
  Arr = (NewRec*) malloc ( sizeof(NewRec) );
 FILE *PB;
  PB = fopen ("PhoneBook.FIL", "a+");
 for ( i=0,rec=2; CH!=27; i++,rec++ )
 {
  printf ("Введите имя абонента    ->"); scanf ("%s", &Arr[i].Name);
  printf ("Введите фамилию абонента->"); scanf ("%s", &Arr[i].Sname);
  printf ("Введите номер телефона  ->"); scanf ("%s", &Arr[i].Pnum);
  fprintf (PB, "%s %s %s\n", Arr[i].Sname, Arr[i].Name, Arr[i].Pnum);
   CH = getch ();
  if (CH!=27) Arr = (NewRec*) realloc ( Arr, rec*sizeof(NewRec) );
 }
 fclose (PB);
}
Пожалуйста подскажите, как вывести на экран всё содержимое файла и (отдельно) какую-нибудь конкретную запись?

Добавлено через 19 часов 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
#include <stdio.h>
#include <conio.h>
#include <alloc.h>
 
struct NewRec
{
 char Name  [15];
 char Sname [20];
 char Pnum  [6];
};
 
void main (void)
{clrscr ();
 int i,rec;
 char CH;
  NewRec *Arr;
  Arr = (NewRec*) malloc ( sizeof(NewRec) );
 FILE *PB;
  PB = fopen ("PhBook.FIL", "a+");
 for ( i=0,rec=2; CH!=27; i++,rec++ )
 {
  printf ("Введите имя абонента    ->"); scanf ("%s", &Arr[i].Name);
  printf ("Введите фамилию абонента->"); scanf ("%s", &Arr[i].Sname);
  printf ("Введите номер телефона  ->"); scanf ("%s", &Arr[i].Pnum);
  fprintf (PB, "%s %s %s \n", Arr[i].Sname, Arr[i].Name, Arr[i].Pnum);
   CH = getch ();
  if (CH!=27) Arr = (NewRec*) realloc ( Arr, rec*sizeof(NewRec) );
 }
 fclose (PB);
 free (Arr);
}
А эта для чтения структуры из файла:
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
#include <stdio.h>
#include <conio.h>
#include <alloc.h>
 
struct NewRec
{
 char Name  [16];
 char Sname [21];
 char Pnum  [7];
};
 
void main (void)
{
  clrscr ();
 int i,j,rec;
 char CH;
  NewRec *Arr;
 FILE *PB;
  Arr = (NewRec*) malloc ( sizeof(NewRec) );
  PB = fopen ("PhBook.FIL", "r");
 for (i=0,rec=2; !feof(PB); i++,rec++)
 {
  fscanf (PB,"%s %s %s",Arr[i].Sname,Arr[i].Name,Arr[i].Pnum);
   Arr = (NewRec*) realloc ( Arr, rec*sizeof(NewRec) );
 }
 fclose (PB);
 for (j=0; j<i-1; j++) printf ("%s %s %s\n",Arr[j].Sname,Arr[j].Name,Arr[j].Pnum);
 free (Arr);
  getch ();
}
Позже я их объединю в одну программу.
Если Вы знаете другой способ, напишите, попробую учесть все Ваши замечания.
Yandex
Объявления
20.04.2010, 08:33     Телефонная книга
Ответ Создать тему
Опции темы

Текущее время: 11:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru