作者dave0213 (姜丝豆腐)
看板C_and_CPP
标题[问题] 用fscanf读整数发生一些问题
时间Thu Oct 22 11:41:52 2009
教授出了一个作业是要用一个 n*n+1 的二维阵列读入他给的data.dat档案中的数字(这
档案很大,一般文书处理软体开不起来),然後经过高斯消去法求解之後代回去算误差,
可是我用fscanf读入时却变成全部都读入1,而其他同学则是其他数字,想请问一下是不
是哪边写错了,下面是我写的程式码的前面部分
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int size, row, column, i, j;
double **matrixA, **matrixB , *matrixC, errorT = 0.0, error = 0.0;
FILE *fp, *fi;
fp = fopen("data.dat","r");
fi = fopen("resultDouble.txt","w");
clock_t start, end;
for(size = 100;size <= 9900;size += 100) //目前为size阶阵列
{
start = clock(); //标记开始时间
//动态配置阵列大小
matrixA = (double **) malloc(size * sizeof(double *));
for(i=0;i <= size-1;i++)
matrixA[i]=(double *)malloc((size+1) * sizeof(double));
matrixB = (double **) malloc(size * sizeof(double *));
for(i=0;i <= size-1;i++)
matrixB[i]=(double *)malloc((size+1) * sizeof(double));
matrixC = (double *) malloc((size+1) * sizeof(double));
//进行读取,matrixA进行运算,matrixB则不动,作为对照
for(row = 0;row <= size-1;row++) //从列1~列尾
for(column = 0;column <= size;column++) //从行1~行尾
matrixA[row][column]=fscanf(fp,"%lf",&matrixA[row][column]);
for(row = 0;row <= size-1;row++)
for(column = 0;column <= size;column++)
matrixB[row][column]=fscanf(fp,"%lf",&matrixB[row][column]);
感谢各位
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.120.222.33
1F:推 VictorTom:你的matrixA/B/C在每阶size的回圈都会重malloc一次, 这 10/22 11:55
2F:→ VictorTom:是你要的吗?_? 10/22 11:55
3F:→ VictorTom:啊不好意思没看仔细, 应该是每次都要重读没错, 你读到1 10/22 11:56
4F:→ VictorTom:是size回圈全读完了还是每一轮size都只读到1?? 10/22 11:56
5F:推 snowlike:fscanf不用回传吧,回传的值应该是表示读档有成功或否 10/22 12:18
6F:推 VictorTom:楼上s大眼睛好利XD 难怪结果全变成1....Orz 10/22 12:22
7F:→ dave0213:了解了...卡在这边一个晚上竟然是这边出问题Orz 10/22 12:43
8F:推 holymars:fscanf的回传值是代表你读到几个item 10/22 19:09
9F:→ holymars:你每次都读到一个%lf 所以每次都传回1 10/22 19:09