關於link list搜尋字串的問題 |
尚未結案
|
光月
一般會員 發表:2 回覆:5 積分:1 註冊:2004-12-19 發送簡訊給我 |
最近開始學C++,遇到最多問題的就是有關於資料結構的部分......
這次我是要寫一個通訊錄,有新增、刪除、排序、查詢......
void na_search(){ //姓名搜尋函式 char *na; int i=0; cout<<"請輸入欲查詢之姓名:"; cin>>na; stu=first; //link移到第一位 while(stu!=NULL||strcmp(stu->name,na)==0){ //stu=NULL或找到相同字串時離開 stu=stu->next; i ; } if(strcmp(stu->name,na)==0){ //找到相同字串時輸出結果 output(); output(i); } else cout<<"查無此姓名!"; }我每次執行到這個function,就會出現類似記憶體錯誤的視窗,我是用BC,當然...我看不懂那個視窗是在寫什麼,只有一堆數字跟英文字,其中是指到一個類似找不到記憶體的訊息,類似0x234:???? 我想應該是strcmp找不到記憶體吧,但是我寫的流程沒有指到錯誤記憶體的地方啊,我研究了好久.....有大大能幫我指點一下嗎,感激啊! |
justdo
高階會員 發表:2 回覆:359 積分:222 註冊:2004-08-17 發送簡訊給我 |
|
光月
一般會員 發表:2 回覆:5 積分:1 註冊:2004-12-19 發送簡訊給我 |
引言: 問題出在 cin >> na; 將資料寫入na的時候,na並沒有配置記憶體空間,所以寫入非法的記憶體空間了 將 char *na; 改成 char na[200]; 就ok了 另外,以後程式有錯誤訊息的時候,把哪一行指出來 別人比較能幫得上忙不好意思,忘了說我也試過陣列的寫法,不過都是結果都是一樣,會出現記憶體錯誤的情形,我貼一下我改的: void name_search(){ char na[20]; int i=0,j; cout<<"請輸入欲查詢之姓名:"; cin>>na; stu=first; while(stu!=NULL){ for(j=0;j |
光月
一般會員 發表:2 回覆:5 積分:1 註冊:2004-12-19 發送簡訊給我 |
不好意思.....剛剛太匆忙了,以致貼錯了=.="
void name_search(){ char na[20]; int j; cout<<"請輸入欲查詢之姓名:"; cin>>na; stu=first; for(j=0;stu!=NULL||strcmp(stu->name,na)!=0;j )<====錯誤應該是從這邊開始的 stu=stu->next; if(strcmp(stu->name,na)==0){ output(); output(j-1); } else cout<<"查無此姓名!"< |
justdo
高階會員 發表:2 回覆:359 積分:222 註冊:2004-08-17 發送簡訊給我 |
for(j=0;stu!=NULL||strcmp(stu->name,na)!=0;j )思考一下:當stu == NULL 的時候會發生什麼事呢? 先檢測 stu != NULL 為false 接著檢測 stu->name... 等等,這時候stu為NULL,怎麼還能取到name的內容? 如果真的要用兩個比較,你應該要用 && 這個運算子,前者為false,他就不檢查後者了 for (j=0; (stu != NULL) && (strcmp(stu->name, na) == 0); j) |
光月
一般會員 發表:2 回覆:5 積分:1 註冊:2004-12-19 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |