C++数据读取到数组中

问题遇到的现象和发生背景

将特定位置数据读取存入数组,需读取下列红框中的数据

img

问题相关代码,请勿粘贴截图

if (strstr(str, "G") != NULL)
{
char column_1[100];
double column_2;
sscanf(str, "%s %lf", column_1, &column_2);
int prn = 0;
sscanf(column_1, "G%d", &prn);
epoch[epochnum].oPRN[k] = prn;
epoch[epochnum].obs[k] = column_2;
}

运行结果及报错内容

只能读取前两个数据,第54-66位的数据无法读取

尝试解决办法

将一行全部读取,中间存在第34位为1或为空值的情况

img

你这代码本来就只读了前两项数据啊
你这每行的数据格式都不统一,也没有区分标志,没办法统一解析啊
或者如果每行你想取得的数据的偏移量是一致的也好,比如确定就是54位开始的12个字符,那也可以获取。

1 每次读取一行
2 按空格或tab分割成数组,看你文件中的分隔符而定
3 如果格式不是那么统一,可以采取有些从前面开始数,比如第一个和第二个数从前面取,第三个可以尝试从后面取。如果这样不行,可以尝试从前面开始数,同时判定数据格式是否符合要求等。但是这些方法都是基于你的数据是有一定规律的,如果就是完全随机的,那没有办法取出来。