C fscanf读取异常
C fscanf读取错误
数据:
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 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
//