看板 C_and_CPP 關於我們 聯絡資訊
如果我已經 為一個動態陣列 申請memory的位置 令他為 G[][] FILE *gtxt; gtxt=fopen("g.txt","r"); for(int i=0;i<K;i++) for(int j=0;j<N;j++) { fscanf(gtxt,"%d",&G[i][j]); 這樣讀出來的G會錯 假設我檔案只有0或者1 讀出來有幾行會變成 235222 0 0 0 0 這種大數字 int tt; fscanf(gtxt,"%d",&tt); G[i][j]=tt; 這樣就不會錯 為什麼呢 ?? } 幫解惑~~~ 感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.224.53.123 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1477327400.A.5F5.html
LPH66: 你的二維陣列怎麼申請的? 10/25 01:07
stupid0319: 動態陣列,令他為G[][],試問第一維陣列多大? 10/25 01:12
stupid0319: 大概是malloc(K*N*sizeof(int));這樣申請的 10/25 01:17
es86016: MALLOC 去申請的 陣列大小 K*N 10/25 01:27
#define MALLOC2(type,name,len_1,len_2) { int i; name=(type**)malloc(sizeof(type*)*len_1); for( i=0; i<len_1; i++ ) name[i]=(type*)malloc(sizeof(type)*len_2); } 申請:呼叫上面定義的 MALLOC2(int,G,K,N); ※ 編輯: es86016 (36.224.53.123), 10/25/2016 01:32:14 ※ 編輯: es86016 (36.224.53.123), 10/25/2016 01:32:42
OPIV: int** 和 int[][] 是不一樣的啊… 10/25 02:25
suwako: 能不能貼上完整的code並附上g.txt 這樣我們比較容易看 10/25 07:40
stupid0319: fscanf(gtxt,"%d",G[i]+j); 改成這樣呢? 10/25 07:42
stupid0319: 第一次看到用指標取值之後再取址得到原指標 10/25 08:07
suwako: 我這樣寫起來是沒問題的阿 我覺得你問題是錯在別的地方 10/25 08:56
es86016: 我找到問題在哪了 G.txt 內容沒有我程式陣列大小這麼多 10/25 13:53
es86016: 謝謝各位 浪費各位的時間了QQ 10/25 13:54
suwako: 下次建議你附上全部資料 問題通常都出在你覺得對的地方 10/25 15:21