我想从二进制文件中读取一行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/

10-12 14:13