作者es86016 (阿誠)
看板C_and_CPP
標題[問題] c 讀檔的問題 fscanf
時間Tue Oct 25 00:43:18 2016
如果我已經 為一個動態陣列 申請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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1477327400.A.5F5.html
1F:→ LPH66: 你的二維陣列怎麼申請的? 10/25 01:07
2F:推 stupid0319: 動態陣列,令他為G[][],試問第一維陣列多大? 10/25 01:12
3F:→ stupid0319: 大概是malloc(K*N*sizeof(int));這樣申請的 10/25 01:17
4F:→ 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
5F:推 OPIV: int** 和 int[][] 是不一樣的啊… 10/25 02:25
6F:→ suwako: 能不能貼上完整的code並附上g.txt 這樣我們比較容易看 10/25 07:40
7F:→ stupid0319: fscanf(gtxt,"%d",G[i]+j); 改成這樣呢? 10/25 07:42
8F:→ stupid0319: 第一次看到用指標取值之後再取址得到原指標 10/25 08:07
9F:→ suwako: 我這樣寫起來是沒問題的阿 我覺得你問題是錯在別的地方 10/25 08:56
10F:→ es86016: 我找到問題在哪了 G.txt 內容沒有我程式陣列大小這麼多 10/25 13:53
11F:→ es86016: 謝謝各位 浪費各位的時間了QQ 10/25 13:54
12F:→ suwako: 下次建議你附上全部資料 問題通常都出在你覺得對的地方 10/25 15:21