C_and_CPP 板


LINE

開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Dev-c++ 問題(Question): 讀檔放到linklist ,剛開始參考 http://goo.gl/ow34WW 的寫法 用fopen開檔和fgets一行一行取資料,要求記憶體空間用malloc 用dev-c++ 建置和按執行的f10都可以執行也正確,但後來作其他 的做完按exe才發現會當掉,而且是在做第2個節點就出問題 原本: if (startPtr == NULL) { startPtr = newPtr; } else { currentPtr = startPtr; while (currentPtr != NULL) { if (currentPtr->nextPtr == NULL) { currentPtr->nextPtr = newPtr; break; } currentPtr = currentPtr->nextPtr; } } 看起來沒問題雖然每一次都從頭再抓尾巴一次,但都是在第2個節點也就是進else的那個 while當掉 後來改: if(startPtr==NULL){ startPtr=newPtr; currentPtr=newPtr; } else{ currentPtr->nextPtr=newPtr; currentPtr=currentPtr->nextPtr; } 就沒問題了 想不到差在哪,參考的linklist寫法範例也試過沒問題 不過dev-c++在建置和執行沒問題,結果點exe才出問題是為什麼... 補充說明(Supplement): 部分程式碼 struct filemenber{ int number; char school[40]; char major[40]; char day[40]; char level[40]; int howmany; }; struct linkedListNode { struct filemenber data; struct linkedListNode *nextPtr; }; typedef struct linkedListNode LinkedListNode; int main(){ char readline[180]; FILE *openfile; LinkedListNode *startPtr, *newPtr, *currentPtr, *previousPtr; openfile=fopen("example.txt","r"); startPtr=NULL; while(fgets(readline,180,openfile)!=NULL){ newPtr =(LinkedListNode*) malloc(sizeof(LinkedListNode)); 這裡用上面的程式碼 } } 實測放第一個出問題的圖: 點dec-C++內的F10 http://i.imgur.com/UKQ6qN9.jpg 點EXE檔 http://i.imgur.com/ZsWOWN6.jpg --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.57.88.116
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1458497247.A.5AF.html
1F:推 suwako: 你的newPtr是怎麼做的? 03/21 07:57
2F:→ WBTs: struct xxx{}; main{xxx *newPtr;} 03/21 08:22
3F:→ WBTs: 就是每次都把newPtr接到linklist 03/21 08:24
4F:→ suwako: 你可以把包含malloc在內的程式碼都放上來嗎? 03/21 08:27
※ 編輯: WBTs (61.57.88.116), 03/21/2016 09:02:15
5F:→ suwako: 你上面的程式碼寫了currentPtr=startPtr這樣每次current 03/21 09:06
6F:→ suwako: 都會重新指到頭,而沒辦法繼續接下去 03/21 09:07
7F:→ WBTs: 我有再用WHILE讓current到尾巴阿 03/21 09:09
8F:→ suwako: while(currentPtr!=NULL) 當current變成NULL的時候就已經 03/21 09:33
9F:→ suwako: 沒有意義了 03/21 09:34
10F:→ suwako: 對不起 我眼殘 上面那個沒有問題 我想問題是在你沒指定 03/21 09:36
11F:→ suwako: newPtr的nextPtr 他不一定是NULL 03/21 09:37
12F:→ WBTs: 沒指定不是null嗎? 可是if (currentPtr->nextPtr == NULL)在 03/21 09:46
13F:→ WBTs: null前時就會跳出吧 03/21 09:47
14F:→ WBTs: 是 https://goo.gl/HKZang 說的嗎? 03/21 09:51
15F:→ suwako: while那邊是我看錯 那邊沒有問題 然後你有確定你的compile 03/21 10:57
16F:→ suwako: r有到C99嗎 03/21 10:57
17F:→ suwako: 我自己會盡量避開這種不確定因素 以免不同編譯器會出問題 03/21 11:06
18F:推 tuyutd0505: 你 newPtr 創建出來之後它的 nextPtr 有沒有設為 NULL 03/21 15:37
19F:→ tuyutd0505: 如果沒有的話在 if curPtr->nextPtr 那邊可能會讀寫到 03/21 15:38
20F:→ tuyutd0505: 非 NULL 的記憶體位址 程式自然就掛了 03/21 15:40
21F:→ WBTs: 我把struct那改初始值為NULL,一樣當掉 03/21 16:14
※ 編輯: WBTs (61.57.88.116), 03/21/2016 16:23:42
22F:→ suwako: 你初始值是用建構子給的? 03/21 17:17
23F:→ WBTs: 我把struct linkedListNode的nextptr=NULL一樣沒變 03/21 19:19
24F:→ tuyutd0505: 有試過 newPtr 初始化完後再做一行 newPtr->next = NU 03/21 20:01
25F:→ tuyutd0505: LL; 嗎? 03/21 20:01
26F:→ tuyutd0505: 手機回文NULL被切掉了sorry 03/21 20:02
27F:→ WBTs: WOW這樣就可以了耶,是因為沒指定所以初始值不一定為NULL嗎? 03/21 23:08
28F:推 tuyutd0505: 沒錯 如果想要避開這個問題的話除了多寫一行 = NULL 03/22 00:17
29F:→ tuyutd0505: 也可以寫建構子 讓它new的時候自動把nextPtr設為NULL 03/22 00:18







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP