求大伙儿帮忙看看这段代码哪里出错了

求大家帮忙看看这段代码哪里出错了?
本帖最后由 xuezhe1990 于 2015-02-09 12:09:45 编辑
#include<stdio.h>
#include<stdlib.h>
 
void main()
 
{
 
 FILE *fp=fopen("C:\\Users\\wan\\Desktop\\调试专用\\121.txt","r");
 
 int a,b,c,d,n=1,m=1;
 double data;
//n表示行数,m是列数,data是要读取的数据
 char buf[255];
 
 if(!fp)
 {
 printf("文件不存在!\n");
 exit(0);
 }
 
 fscanf(fp,"%d%d",&a,&b);
 
 c=2*a+1;
 
 d=3*b-6;
 
 while(!feof(fp))
 {
 
  if(n==c)
  {
   for(m=1;m<=d;m++)
   {
   fscanf(fp,"%f",&data);
   }
   break;
  }
 
  else
 
  {
  fgets(buf,254,fp);
  n++;
  }
 
 }
 fclose(fp);
 printf("data=%e\n",data);  
}


功能是从一个txt例读取特定行列的数据,当txt里全是int类型时没问题,但当我把里面数改成double类型就会出错,请大家帮忙看看txt如下
2 3
0.1 0.2 0.3 0.4
0.5 0.6 0.7 0.8
0.9 0.10 0.11 0.12
0.13 0.14 0.15 0.16
0.17 0.18 0.19 0.20

------解决思路----------------------
仅供参考
#include <stdio.h>
char s[]="123 ab 4";
char *p;
int v,n,k;
void main() {
    p=s;
    while (1) {
        k=sscanf(p,"%d%n",&v,&n);
        printf("k,v,n=%d,%d,%d\n",k,v,n);
        if (1==k) {
            p+=n;
        } else if (0==k) {
            printf("skip char[%c]\n",p[0]);
            p++;
        } else {//EOF==k
            break;
        }
    }
    printf("End.\n");
}
//k,v,n=1,123,3
//k,v,n=0,123,3
//skip char[ ]
//k,v,n=0,123,3
//skip char[a]
//k,v,n=0,123,3
//skip char[b]
//k,v,n=1,4,2
//k,v,n=-1,4,2
//End.