现在我遇到了另一个问题,在我更改编码后,如下所示,它仍然显示错误。代码里面没有任何红色下划线,所以我无法找出错误在哪里。那么这个编码有什么错误吗?
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);
}
最佳答案
首先, fflush(stdin);
是 undefined错误。应该使用fflush(stdout);
第二,函数 addcontact(struct contact list[100])
变量 no 尚未分配任何值,并且您正在 scanf()
中使用具有垃圾值的函数。
第三,位于 read()
功能fwrite(list,sizeof(list),100,f);
是错误的,应该是这样的。
fwrite(list, sizeof(struct contact), 100, f);
我不确定,但看起来你打算阅读多个联系人,所以你还需要一个可能在 addcontact() 函数内的循环机制
关于通过使用结构不同的代码将管理器与C程序联系起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15122225/