我想从二进制文件中读取一行float,并将它们放入struct数组中。它们以ascii格式编写,如下所示:
79.911334 51.105907 12.947192
68.604502 47.935201 36.789463
84.539461 21.804353 31.306850
在ascii中,我使用了fgets、strtok和atof来实现这一点,但我不知道使用二进制。
这是我的代码,显然不起作用:
char ch[100];
int line = 0;
while(fread(ch,sizeof(ch),1,fp) != 0){
if(line >= 5){
const char *tabs = " ";
char *deger = strtok(ch, tabs);
int counter = 0;
while (deger!= NULL)
{
if(counter== 0 ){
tipBir[line].x = atof(deger);
}else if(counter == 1){
tipBir[line].y = atof(deger);
}else if(counter == 2){
tipBir[line].z = atof(deger);
}
deger = strtok(NULL, ayrac);
counter ++;
}
}
line++;
}
最佳答案
您没有包含tipBir
的定义。假设它只包含x、y、z元素,并且假设已知期望点的ynumber,则可以使用fread。
FILE *fp = fopen ( ... ) ;
int max_points = 3 ;
int n_points = fread(tipBir, sizeof(*tipBir), max_points, fp) ;
// do something wit tipBir - n_points elements.
关于c - 从C中的二进制文件读取一行浮点数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58421274/