使用结构与c程序联系经理

struct contact { char name[20],email[20]; int hpnum; }add; int option; int main (void) { 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: printf("Contact Name: "); scanf("%s",&add.name); printf("\nHandphone Number: "); scanf("%d",&add.hpnum); printf("\nE-mail: "); scanf("%s",add.email); break; } getch(); } 

这个编码有什么问题? 我可以运行它,但一旦选择否。 1,出现了错误。 如果我的编码错误,请通知我。 我还是初学者,希望你们都能帮助我。

您忘记在选项变量之前添加ampersand &

  scanf("%d",option); 

应该

  scanf("%d",&option); 

option是一个int,所以这里需要&在scanf中。

第二: &ampersand需要在add.name之前删除

  scanf("%s",&add.name) 

应该

  scanf("%s",add.name) 

add.name是一个char数组,我们不需要& %s

添加fflush(stdout); 这两个陈述之间:

  printf("Contact Name: "); scanf("%s",&add.name); 

与其他不以\n字符结尾的printf语句相同。

并且对于信息, s转换说明符期望指向char的指针,因此不要使用&运算符,只需调用scanf("%s", add.name)