使用C語言怎么實現(xiàn)一個模糊搜索功能?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
成都創(chuàng)新互聯(lián)是專業(yè)的大廠網(wǎng)站建設公司,大廠接單;提供網(wǎng)站建設、成都網(wǎng)站建設,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行大廠網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
//模糊搜索判斷是否符合篩選條件 int result_mohu(const gchar* key,char* str) { typedef struct { char son[11]; }Element; int i,j,k=0,l=0,m=0; //f=1為符合篩選條件 int f=0; //N1為str的長度 N2為str連續(xù)子串的個數(shù) int N1=0,N2=0; N1=strlen(str); /*計算連續(xù)子串的個數(shù)*/ for(i=1;i<=N1;i++) N2+=i; /*計算連續(xù)子串的個數(shù)*/ //i控制子字符串的長度 //j控制賦值 //k控制新的線性結構b的下標 //l控制子數(shù)組的首項在原數(shù)組中的位置 //m控制即將用作賦值的str的下標 Element *b=malloc(sizeof(Element)*N2); for(i=1;i<=N1;i++) { l=0; /*while循環(huán)內為給一個子字符串數(shù)組賦值*/ while(1) { m=l; for(j=0;j<i;j++) { b[k].son[j]=str[m]; m++; } l++; k++; if(m==N1) break; } } //挨個比對 for(i=0;i<N2;i++) if(strcmp(key,b[i].son)==0) { f=1; break; } free(b); return f; }
若返回值f=1則表示符合篩選條件,即查詢對象含有包含關鍵詞的片段。最為關鍵的循環(huán)就是按照子字符串的長度從1到N1(查詢對象字符串的長度)。
以下片段為遍歷代碼,可看可不看,核心算法都在上面。注:博主實現(xiàn)模糊搜索的環(huán)境是linux系統(tǒng)下的gtk開發(fā)。
//按學號查找界面的<查找> void on_button_idsearch_clicked(GtkObject* widget,gpointer user_data) { int i; int f=0; GtkTreeIter iter; //獲取搜索關鍵字 const gchar* keywords = gtk_entry_get_text(entry_search_id); gtk_list_store_clear(liststore2); for(i=0;i<size1;i++) if(result_mohu(keywords,stu1[i].id)==1) { gtk_list_store_append(liststore2,&iter); gtk_list_store_set(liststore2,&iter,0,stu1[i].no,-1); gtk_list_store_set(liststore2,&iter,1,stu1[i].id,-1); gtk_list_store_set(liststore2,&iter,2,stu1[i].name,-1); gtk_list_store_set(liststore2,&iter,3,stu1[i].math,-1); gtk_list_store_set(liststore2,&iter,4,stu1[i].c_language,-1); gtk_list_store_set(liststore2,&iter,5,stu1[i].daolun,-1); gtk_list_store_set(liststore2,&iter,6,stu1[i].english,-1); gtk_list_store_set(liststore2,&iter,7,stu1[i].pe,-1); gtk_list_store_set(liststore2,&iter,8,stu1[i].history,-1); gtk_list_store_set(liststore2,&iter,9,stu1[i].daoyuan,-1); gtk_list_store_set(liststore2,&iter,10,stu1[i].banzhuren,-1); gtk_list_store_set(liststore2,&iter,11,stu1[i].score_classmate,-1); gtk_list_store_set(liststore2,&iter,12,stu1[i].sum,-1); f=1; } if(f==0) gtk_widget_show(GTK_WIDGET(window_noresult)); }
C語言是一門面向過程的、抽象化的通用程序設計語言,廣泛應用于底層開發(fā),使用C語言可以以簡易的方式編譯、處理低級存儲器。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。
網(wǎng)站欄目:使用C語言怎么實現(xiàn)一個模糊搜索功能
當前路徑:http://chinadenli.net/article36/ihccsg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供云服務器、外貿網(wǎng)站建設、小程序開發(fā)、網(wǎng)站建設、App設計、微信公眾號
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)