C fscanf读取异常

C fscanf读取错误
本帖最后由 maychard1121 于 2015-04-09 10:02:46 编辑
数据:
800 2 128 230400
800.dat 212 200 10 0 -101 -25183 0 ECG1
800.dat 212 200 10 0 123 10510 0 ECG2

#include<stdio.h>
#include <stdlib.h>
void main()
{
int i,j,t;
int nosig, Fs, gain, basevalue;
int *a;
long p,num;
int mh0,mh1,m,n;   
float mh00,mh11;       /*mh00组和mh11组心电数据,mh00,mh11获得的数据保存在mh01数组中*/
      /*字符变量的数组*/

//------ LOAD HEADER DATA --------------------------------------------------
    FILE *fid;
   if((fid=fopen("800.hea","r"))==NULL)
   {
   printf("Cannot open file strike any key exit!");
  
   }
  
fscanf(fid,"%*d%d%d\n",&nosig,&Fs);
printf("%d,%d\n",nosig,Fs); 

fscanf(fid,"%*[^\n]%*c");  // 跳1 行
       //取第二行的200 0  出错了,请教下
fscanf(fid,"%*c%*d%d%*d%d",&gain,&basevalue);  // 读 2 个 int
printf("%d%d\n",gain,basevalue);  

}
------解决思路----------------------
//文件800.hea的内容:
//800 2 128 230400
//800.dat 212 200 10 0 -101 -25183 0 ECG1
//800.dat 212 200 10 0 123 10510 0 ECG2
#include <stdio.h>
#include <stdlib.h>
void main() {
    int i,j,t;
    int nosig, Fs, gain, basevalue;
    int *a;
    long p,num;
    int mh0,mh1,m,n;
    float mh00,mh11;       /*mh00组和mh11组心电数据,mh00,mh11获得的数据保存在mh01数组中*/
    /*字符变量的数组*/

    //------ LOAD HEADER DATA --------------------------------------------------
    FILE *fid;
    if((fid=fopen("800.hea","r"))==NULL) {
        printf("Cannot open file strike any key exit!");
        return;
    }

    fscanf(fid,"%*d%d%d\n",&nosig,&Fs);
    printf("%d,%d\n",nosig,Fs);

    fscanf(fid,"%*[^\n]\n");  // 跳1 行
    //取第二行的200 0
    fscanf(fid,"%*s%*d%d%*d%d%*[^\n]\n",&gain,&basevalue);
    printf("%d,%d\n",gain,basevalue);
    //取第三行的200 0
    fscanf(fid,"%*s%*d%d%*d%d%*[^\n]\n",&gain,&basevalue);
    printf("%d,%d\n",gain,basevalue);
    fclose(fid);
}
//2,128
//200,0
//200,0
//