[問題] 用鏈結串列應出資料

看板C_and_CPP (C/C++)作者 (斷月嵐)時間14年前 (2012/04/25 22:19), 編輯推噓0(0028)
留言28則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) DEV C++ 問題(Question): 目前卡在設定鏈結,dev c++說語法錯誤 錯誤結果(Wrong Output): 無法編譯 程式碼(Code):(請善用置底文網頁, 記得排版) http://ideone.com/Vcu4f -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.240.17.114

04/25 22:21, , 1F
忘了寫補充說明,因為用矩陣的方式,我有用過把加上[20]
04/25 22:21, 1F

04/25 22:22, , 2F
和沒有[20]的都不能編譯
04/25 22:22, 2F

04/25 22:24, , 3F
69~73行不能用20只能用19. 另外&node2[0] (及&node3[0],
04/25 22:24, 3F

04/25 22:24, , 4F
以此類推)放在等號右邊
04/25 22:24, 4F

04/25 22:38, , 5F
輸入檔案內容是? 你節點名稱也設定得太怪
04/25 22:38, 5F

04/25 22:45, , 6F
node1[i].name="szContent[i]"; ←雙引號括起來表示是字串
04/25 22:45, 6F

04/25 22:46, , 7F
node2 的迴圈i忘了++
04/25 22:46, 7F

04/25 23:20, , 8F
主要試鏈結問題,不過這個解決後面問題更大
04/25 23:20, 8F

04/25 23:21, , 9F
所以我大概還要修很多東西吧
04/25 23:21, 9F

04/25 23:22, , 10F
這個題目是要用txt裡的字串存入結構裡,然後再用鏈結的
04/25 23:22, 10F

04/25 23:23, , 11F
方式印出資料,我現在整個改很大就是了 = =
04/25 23:23, 11F

04/25 23:25, , 12F
鏈結後面是我亂打的,怕傷眼就無視吧 囧
04/25 23:25, 12F

04/26 00:16, , 13F
不知道改這樣會如何node1[i].name=&szContent[i];
04/26 00:16, 13F
http://ideone.com/FeEFB 我依樓上的建議改了一遍 但是無法執行 ※ 編輯: a80885057 來自: 123.240.17.114 (04/26 03:18)

04/26 04:16, , 14F
建議原PO把目前code裡面做的事情用口語的方式敘述一遍
04/26 04:16, 14F

04/26 04:17, , 15F
再把原本預計要做的事情敘述一遍,比較其中的差異
04/26 04:17, 15F

04/26 04:19, , 16F
原本想做的事情可以寫在紙上,就不必擔心編譯不過
04/26 04:19, 16F

04/26 04:20, , 17F
如果紙上的敘述不知道如何轉換成C的語法的話,歡迎提問
04/26 04:20, 17F
http://ideone.com/OjSXu 我有加上註解 我把&去掉了 把資料輸入結構裡應該是不用& 目前是卡在不知道怎麼用 printf("%s",head->name); 的方式印出資料 但是用我上面用矩陣的方法似乎無法用這種方式輸出 ※ 編輯: a80885057 來自: 123.240.17.114 (04/26 14:21) ※ 編輯: a80885057 來自: 123.240.17.114 (04/26 14:28)

04/26 14:42, , 18F
你的name是指標阿
04/26 14:42, 18F

04/26 21:07, , 19F
如果要用printf("%s",A),A必須是char的指標,
04/26 21:07, 19F

04/26 21:10, , 20F
而且A必須指向一個「連續存放char並以'\0'為結尾」的空間
04/26 21:10, 20F

04/26 21:13, , 21F
由於name是指標,所以不用把szContent的內容複製到node裡
04/26 21:13, 21F

04/26 21:14, , 22F
而是讓name去指向szContent中每個字串的開頭
04/26 21:14, 22F

04/26 21:16, , 23F
每行字只需要一個node,不需要20個
04/26 21:16, 23F

04/26 21:17, , 24F
為了讓讀取node.name所指向的字串的人知道它的結尾,
04/26 21:17, 24F

04/26 21:19, , 25F
szContent中原本當作結尾的'\n'的位置要放'\0'進去
04/26 21:19, 25F
如果直接把資料裡的字串直接複製到node1.name 可以寫成這樣嗎 if(pFile) { do{ node1.name= fgets (pFile); } while (c != '\n' ); fclose(pFile); } 但是這樣他會說 cannot convert `FILE*' to `char*' for argument `1' to `char* fgets(char*, int, FILE*)' 我不了解他說什麼耶? 另外我前面已經宣告成struct llnode node1, node2, node3,node4,node5, *head; ※ 編輯: a80885057 來自: 123.240.17.114 (04/26 21:39)

04/26 21:55, , 26F
char * fgets ( char * str, int num, FILE * stream );
04/26 21:55, 26F

04/26 21:56, , 27F
str必須傳入呼叫者提供的記憶體空間的指標,num傳空間大小
04/26 21:56, 27F

04/27 18:05, , 28F
了解,不過我法現fscanf比較好用,感謝各位大大
04/27 18:05, 28F
文章代碼(AID): #1Fc0W1c5 (C_and_CPP)
文章代碼(AID): #1Fc0W1c5 (C_and_CPP)