0

该代码应该接受数据,显示存储到当前执行的整个数据,修改或更改已经接受的数据。我在回答中寻找什么:如何编写修改模块的代码?如何更正添加或接受数据,显示
数据使其完美运行。

#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