2013-03-02 88 views
0
int main (void){ 
    do 
    { 
     mainmenu: 
     mainmenu(); 
     switch(option) 
     { 
       //add new contact 
       case 1:addcontact(storage);savecontact(storage); 
        break; 
       case 2:searchcontact(); 
      break; 
     } 
    }while(true); 
} 
void searchcontact() 
{ 
    char searchname[20]; 
    system("cls"); 
    do 
    { 
     int find = 0; 
     printf("Contact Search\n Name of the Contact:\n"); 
     fflush(stdin); 
     scanf("%[^\n]",&searchname); 
     length=strlen(searchname); 
     f=fopen("contact.txt","rb"); 

     system("cls"); 
     printf("Search the result for %s\n",searchname); 
     while(fread(&storage,sizeof(storage),space,f)==true) 
     { 
      for(i=0;i<=length;i++) 
      storage[space].name[i]=storage[space].name[i]; 
      storage[space].name[length]='\0'; 
      if(stricmp(storage[space].name,searchname)==false) 
       printf("Name\t:%s\nPhone\t:%d\nE-mail\t:%s\n",storage[space].name,storage[space].hpnum,storage[space].email); 
       find++; 
     } 
     if(find==false) 
      printf("\nNo match found!"); 
      else 
      printf("\n %d match(s) found",find); 
      fclose(f); 
      printf("\nTry again?\t[1] Yes\t[2] No\n"); 
      scanf("%d",&choice); 
    }while(choice==true); 
} 

我遇到了搜索問題......在我添加聯繫人之後,我無法再搜索它......我使用stricmp搜索聯繫人...儘管我發現了保存聯繫人的正確名稱,但它仍然無法搜索出來......繼續打電話給我再試一次。所以這個bug主要是在那裏的搜索功能。我的真實值是== 1,而我的錯誤值是== 0。與聯繫人系統管理的搜索功能問題

+0

是C代碼嗎?一些功能和變量定義缺失,如選項存儲選擇...你可以給缺少的部分? – 2013-03-02 09:02:19

+0

@nullix這沒關係......我試圖將我的代碼上傳到其他地方,你可以下載它... =) 由於在這裏不能寫太多的編碼,我寧願你下載我的文件,並理解我的整個編碼以便讓您解決我的問題。 =) http://www.mediafire.com/?pkqsasr8forgjwv – jefferyleo 2013-03-02 12:21:53

+0

我把它移植到linux來測試它,並修復你的功能,看到答案。 – 2013-03-03 21:18:52

回答

0

fread返回一些讀取項目(不是真或假......)。

  • 然後在你的情況下,只有當數據庫中只有一個項目時才返回1。
  • searchname是字符數組所以searchname是char *(& searchname是char * *)

對不起代碼,目前我不能過去它SO正確,它並不要粘貼Ç縮進代碼。我可以郵寄給你。

void searchcontact() 
{ 
    char searchname[20],name[20]; 
    clearscreen(); 
    do { 
     int i=0; 
     int find = 0; 
     int found = -1; 
     int local_index=i%space; 
     printf("Contact Search\n Name of the Contact:\n"); 
     fflush(stdin); 
     //  scanf("%[^\n]",searchname); 
     scanf("%s",searchname); 
     length=strlen(searchname); 
     f=fopen("contact.txt","rb"); 
     clearscreen(); 
     printf("Search the result for %s\n",searchname); 
     while (fread(&storage[local_index],sizeof(struct contact),1,f)==1) 
    { 
     if(stricmp(storage[i%space].name,searchname)==false) 
     {  
      printf("Name\t:%s\nPhone\t:%d\nE-mail\t:%s\n",storage[local_index].name,storage[local_index].hpnum,storage[local_index].email); 
      find++; 
      found=i; 
     } 
     i++; 
     local_index=i%space; 
    } 
     if(find==false) printf("\nNo match found!"); 
     else printf("\n %d match(s) found",find); 
     fclose(f); 
     printf("\nTry again?\t[1] Yes\t[2] No\n"); 
     scanf("%d",&choice); 
    } while(choice==true); 
}