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 回答