0

コードは、データを受け入れ、現在の実行までに保存されたデータ全体を表示し、既に受け入れられたデータを変更または変更することになっています。回答で何を探していますか:Modifyモジュールのコードを書く方法は? データの追加または受け入れ、データの表示を修正して、
完全に機能するようにする方法。

#include<stdio.h>

typedef struct
{
    int select;
    char lastname[25];
    char firstname[25];
    char address[25];
    int phonenumber[25];
} addressbook;

#define ARRAYLEN 2       //The lecturer told to use this "#define ARRAYLEN 2

addressbook a[ARRAYLEN];   //but why 2?and why use ARRAYLEN 2 with define
FILE *fp;

int main()                 //how is it affecting my program
{
    int i;
    int c;
    int fgetc(FILE *stream);
    int fputc(int c,FILE *stream);
    fp = fopen("addressbook.dat","a+");

    //ADD
    for( i=0; i<ARRAYLEN ; ++i)
    {
        printf("enter details\n");
        printf("enter lastname:\n");
        scanf("%s", a[i].lastname);
        printf("enter firstname:\n");
        scanf("%s", a[i].firstname);
        printf("enter address:\n");
        scanf("%s", a[i].address);
        printf("enter phone number:\n");
        scanf("%d", a[i].phonenumber);
        fwrite(&a[i], sizeof(a), 1, fp); /* notice, array indexed */
    };
    fclose(fp);

    //DISPLAY
    fopen("addressbook.dat", "r");
    for(i=0; i<ARRAYLEN; ++i)
    {
        fread(&a[i], sizeof(a), 1, fp );
        fgetc;
        printf("first name is %s",a[i].firstname);
        printf("last name is %s",a[i].lastname);
        printf("the address is %s",a[i].address);
        printf("the phonenumber is %d",a[i].phonenumber);
    };
    fclose(fp);

    return 0;
}

重要な注意: 私は Windows Vista OS を使用しており、コンパイラは Turbo C++ です。

4

0 に答える 0