[問題] c 讀檔的問題 fscanf

看板C_and_CPP作者 (阿誠)時間7年前 (2016/10/25 00:43), 7年前編輯推噓2(2010)
留言12則, 5人參與, 最新討論串1/1
如果我已經 為一個動態陣列 申請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

10/25 01:07, , 1F
你的二維陣列怎麼申請的?
10/25 01:07, 1F

10/25 01:12, , 2F
動態陣列,令他為G[][],試問第一維陣列多大?
10/25 01:12, 2F

10/25 01:17, , 3F
大概是malloc(K*N*sizeof(int));這樣申請的
10/25 01:17, 3F

10/25 01:27, , 4F
MALLOC 去申請的 陣列大小 K*N
10/25 01:27, 4F
#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

10/25 02:25, , 5F
int** 和 int[][] 是不一樣的啊…
10/25 02:25, 5F

10/25 07:40, , 6F
能不能貼上完整的code並附上g.txt 這樣我們比較容易看
10/25 07:40, 6F

10/25 07:42, , 7F
fscanf(gtxt,"%d",G[i]+j); 改成這樣呢?
10/25 07:42, 7F

10/25 08:07, , 8F
第一次看到用指標取值之後再取址得到原指標
10/25 08:07, 8F

10/25 08:56, , 9F
我這樣寫起來是沒問題的阿 我覺得你問題是錯在別的地方
10/25 08:56, 9F

10/25 13:53, , 10F
我找到問題在哪了 G.txt 內容沒有我程式陣列大小這麼多
10/25 13:53, 10F

10/25 13:54, , 11F
謝謝各位 浪費各位的時間了QQ
10/25 13:54, 11F

10/25 15:21, , 12F
下次建議你附上全部資料 問題通常都出在你覺得對的地方
10/25 15:21, 12F
文章代碼(AID): #1O3ZeeNr (C_and_CPP)