c语言fscanf读取结构体变量,怎样用fscanf读入结构体变量

博客介绍了如何使用C语言的fscanf函数读取包含结构体的文本文件数据。通过定义CHxMEAS和MEAS结构体,并尝试读取measA.txt文件中的数据,博主遇到了数据读取不正确的问题。在读取过程中,对结构体成员逐个进行匹配,但遇到了第一组数据读取错误和后续数据无法读入的状况。博客寻求解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义了2个结构体

typedef struct

{

int dprogtic;

int dtic;

double tr;

double dt;

int mflag;

short sv;

short codephase;

unsigned short codedcophase;

unsigned short carrierdcophase;

short ms;

short bit;

int carriercycle;

int s;

}CHxMEAS;

typedef struct

{

int dprogtic;

int dtic;

double tr;

double dt;

CHxMEAS m[14];

}MEAS;

MEAS jz_data_meas;

然后读取txt文本

if((fpC=fopen(“measA.txt”,”r+”) )==NULL)

{

printf(“The file  can not be opened.\n”);

exit(1);

}

fscanf(fpC,”%d %d %d %f\n”,&jz_data_meas.dprogtic,&jz_data_meas.dtic,&jz_data_meas.tr,&jz_data_meas.dt);

for(i=0;i<14;i++)

{

fscanf(fpC,”%2d%2d%4d%4u%4u%4%4d%4d%6d”,&jz_data_meas.m[i].mflag, &jz_data_meas.m[i].sv, &jz_data_meas.m[i].codephase, &jz_data_meas.m[i].codedcophase&jz_data_meas.m[i].carrierdcophase,&jz_data_meas.m[i].ms, &jz_data_meas.m[i].bit, &jz_data_meas.m[i].carriercycle, &jz_data_meas.m[i].s);

}

文本里的数据按结构体为单元存储的,如下

0 0 116183 0.000000000000000

1  1 1052 4956 56009    5   20 4092169 116183

1  2  244 59050 61601    1   20 4092149 116183

1  3  533 23284 50958    6   20 4092184 116183

1  4 1855 30474 37189    1   20 4092166 116183

0  0    0    0    0    0    0 4092000      0

0  0    0    0    0    0    0 4092000      0

0  0    0    0    0    0    0 4092000      0

0  0    0    0    0    0    0 4092000      0

0  0    0    0    0    0    0 4092000      0

0  0    0    0    0    0    0 4092000      0

1 30  843 47619 50997    2   27 4090314 375966

1  8 1918 40327 48850    0   20 4093869 116183

0  0    0    0    0    0    0 4092000      0

0  0    0    0    0    0    0 4092000      0

0 0 116184 0.000000000000000

1  1 1052 24807 2387    5   20 4092189 116184

1  2  245 6896 49377    1   20 4092168 116184

1  3  533 41575 24612    6   20 4092203 116184

1  4 1855 42343 37049    1   20 4092185 116184

0  0    0    0    0    0    0 4092000      0

0  0    0    0    0    0    0 4092000      0

0  0    0    0    0    0    0 4092000      0

0  0    0    0    0    0    0 4092000      0

0  0    0    0    0    0    0 4092000      0

0  0    0    0    0    0    0 4092000      0

1 30  841 31546 15620    2   27 4090333 375967

1  8 1921 7397 54574    0   20 4093887 116184

0  0    0    0    0    0    0 4092000      0

0  0    0    0    0    0    0 4092000      0

第一组数据输出一个成了随机变量,不是读入的数据,第二组索性无法读入,大神帮忙支招一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值