2013-02-27 133 views
0
 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,没有错误。如果我的编码错误,请通知我。我还是个初学者,希望大家都能帮助我。使用结构的c程序的联系人管理器

+0

什么是t他错误? – 2013-02-27 20:21:05

+0

错误是我遗漏了scanf(“%d”,选项)的符号; 它应该是scanf(“%d”,&选项); 另一个问题是字符串... 它不应该是scanf(“%s”,&add.name);而不是scanf(“%s”,add.name); ,因为它是一个字符串,所以不能在scanf中使用&符号... – 2013-02-28 19:14:23

回答

1

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

scanf("%d",option); 

应该

scanf("%d",&option); 

选项是一个整数,所以这里需要&在scanf。

第二:符号之前需要add.name删除

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

应该

scanf("%s",add.name) 

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

+0

感谢您的回答...现在我有另一个问题...我改变了代码...但有一些问题...你能帮忙吗我检查? 这里的链接... http://stackoverflow.com/questions/15122225/contact-manager-with-c-program-by-using-structure-different-code – 2013-02-27 20:56:13

0

添加fflush(stdout);这两个语句之间:

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

同样的,不具有\n字符结束的其他printf语句。

而对于信息s转换说明符需要一个指向char的指针,所以不要使用&运算符,只需调用scanf("%s", add.name)

相关问题