Я пишу программу для адресной книги.Есть варианты вставки, отображения и удаления.При вставке он принимает входные данные и сохраняет их в файл.всякий раз, когда я добавляю новый контакт, он добавляет их в файл.После сохранения данных в файл, могу ли я динамически выделить массив структурной адресной книги для хранения каждой контактной информации.Так что, если я захочу отобразить или удалить определенный контакт, это будет легко, кроме открытия файла, сравнения каждого элемента в файле.В зависимости от количества контактов, сохраненных в файле, можем ли мы динамически выделить массив для структурной адресной книги и сохранить детали.
#define FIRST_NAME_LENGTH 15
#define LAST_NAME_LENGTH 15
#define NUMBER_LENGTH 15
#define ADDRESS_LENGTH 15
/* Structure defining a name */
struct Name
{
char lastname[LAST_NAME_LENGTH];
char firstname[FIRST_NAME_LENGTH];
};
/* Structure defining a phone record */
struct addressbook
{
char answer;
struct Name name;
char address[ADDRESS_LENGTH];
char phonenumber[NUMBER_LENGTH];
};
struct addressbook a;
void add_record()
{
printf("enter details\n");
printf("enter lastname of person :\n");
scanf("%s", a.name.lastname);
printf("enter firstname of person :\n");
scanf("%s", a.name.firstname);
printf("enter address of person :\n");
scanf("%s", a.address);
printf("enter phone number of person :\n");
scanf("%s", a.phonenumber);
if((fp = fopen(filename,"a+")) == NULL){
printf("Error opening %s for writing. Program terminated.\n", filename);
abort();
}
fwrite(&a, sizeof(a), 1, fp); /* Write to the file */
fclose(fp); /* close file */
printf("New record added\n");
}