0

以下に示すようにコーディングを変更した後も、エラーが表示されます。コーディングの中に赤い下線が無かったので、どこが間違っているのかわかりません。では、このコーディングのエラーはありますか?

struct contact
{
    char name[20],email[20];
    int hpnum;
}add;
int option;
FILE *f;

void addcontact(struct contact list[100]);
void read(struct contact list[100]);

int main (void)
{
    struct contact list[100];
    system("cls");
    printf("==========Welcome to Jeffery's Contact System Management==========\n");
    printf("\t\t\tContact System Main Menu\n");
    printf("[1] Create a New Contact\n");
    printf("[2] Modified Existing Contact\n");
    printf("[3] Delete Existing Contact\n");
    printf("[4] Search Existing Contact\n");
    printf("[5] Exit\n");
    printf("Please enter one of your option.\n");
    scanf("%d",&option);
    switch(option)
    {
        //add new contact
        case 1:addcontact(list);read(list);
        break;
    }

    getch();
}

void addcontact(struct contact list[100])
{
    char name[20],email[20];
    int hpnum,no;

    printf("\nContact Name: ");
    scanf("%s",list[no-1].name);
    fflush(stdin);
    printf("\nHandphone Number: ");
    scanf("%d",&list[no-1].hpnum);
    fflush(stdin);
    printf("\nE-mail: ");
    scanf("%s",list[no-1].email);
}

void read(struct contact list[100])
{
  FILE *f;
  f=fopen("contact.txt","w");
  fwrite(list,sizeof(list),100,f);
  fclose(f);
}
4

1 に答える 1

0

まず、 未定義エラーですfflush(stdin);。使用する必要がありますfflush(stdout);

次に、関数addcontact(struct contact list[100])変数noに値が割り当てられておらず、scanf()関数内でガベージ値を使用しています。

第三に、read()機能fwrite(list,sizeof(list),100,f);が間違っているようにすべきです。

fwrite(list, sizeof(struct contact), 100, f);

よくわかりませんが、複数の連絡先を読み取ることを意図しているように見えますしたがって、おそらく addcontact() 関数内にループメカニズムも必要です

于 2013-02-27T21:06:18.870 に答える