作者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/cn.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