作者leon1757tw (指考戰士)
看板C_and_CPP
標題[問題] 關於動態配置二維陣列的存取
時間Sun Dec 18 01:20:34 2016
開發平台(Platform): (Ex: Win10, Linux, ...)
FreeBSD 10.1
gcc 4.8.5
版上各為大家好
最近在練習一個程式,使用fopen()開檔讀入資料
目前的想法是想將資料透過fgets()讀入
並一行一行存入一個使用動態配置的二維陣列中
http://imgur.com/0hMsXPg
http://imgur.com/2ITqm3A
問題一
不知為何於21行中
fptr如沒重新指向fopen()
下方for迴圈中fgets()所做的事情會被跳過
問題二
將fgets()所得字串存入data[i]中
執行結果會得到segmentation fault (core dumped)
是無法這樣存取嗎?
請問各位高手該如何解決
拜託大家了
最近剛學指標請各位大大多多指教
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.166.233.182
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1481995242.A.C1D.html
2F:→ aiwhat: 第一段的敘述:fgetc讀完後會指向下一個字元 12/18 02:01
4F:→ aiwhat: 問題二是Initialize裡面寫錯了 12/18 02:21
5F:→ aiwhat: dynamic 2d array 可以參考 z-4-3-1-3 12/18 02:22
感謝說明第一個問題已解決,
但Initialize內二維動態陣列修改後,
fgets()仍無法存入data[i]中,
執行結果依然是segmentation fault (core dumped)
還是其他問題呢?
附上程式碼:
http://ideone.com/0nA39U
※ 編輯: leon1757tw (220.133.214.137), 12/19/2016 00:02:13
※ 編輯: leon1757tw (220.133.214.137), 12/19/2016 00:04:33
6F:→ aiwhat: for 裡面不用 fgets 12/19 10:07
7F:→ aiwhat: fgets 會把換行符號 '\n' 放進字串,試試把Initialize還有 12/19 10:10
8F:→ aiwhat: fgets 的 lineMaxChar 換成 lineMaxChar + 1 12/19 10:11
9F:→ aiwhat: 還要多一個空間放 '\0' 12/19 10:11
謝謝a大的說明,
已經解決了。
※ 編輯: leon1757tw (220.133.214.137), 12/19/2016 13:45:45