私はアドレス帳用のプログラムを作成しています。挿入、表示、削除のオプションがあります。挿入時には、入力データを取り込んでファイルに格納します。私は新しい連絡先を追加するたびにファイルに追加します。 データをファイルに保存した後、各連絡先の詳細を格納する構造体アドレス帳の配列を動的に割り当てることはできますか?そのため、特定の連絡先を表示または削除したい場合は、ファイルを開くこと以外はファイル内の各要素を比較するだけです。 ファイルに保存された連絡先の数に応じて、構造体アドレス帳用の配列を動的に割り当てて詳細を保存できますか?構造体の配列を動的に作成し、ファイルにデータを格納する方法
#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");
}