c - 如何在 C 中将文件中的逗号分隔数字读入多维数组

标签 c fread fseek

我想编写一个函数,在文件中创建整数数组,并用逗号分隔数字,如下所示:

         1,    54520.00000,    86397.00000,   0
         2,    54440.00000,    87200.00000,   0
         3,    51280.00000,    97600.00000,   0
         4,    50000.00000,   100000.00000,   0
         5,    48880.00000,   100000.00000,   0

第一列是每行的编号,所以我需要的数据实际上是接下来的三列。
我的问题是:

  1. 由于我不知道数组的维数,因此我必须首先读取最后一行的第一个数字。怎么做?我尝试使用 fseek 将我的文件指针指向文件末尾,然后找到前面的 '\n',但我不知道如何处理逗号。
  2. 获得行数后,如何将我需要的数据读取到 N_row*3 数组中?如何处理逗号和'\n'?

提前感谢您的帮助!

最佳答案

您可以使用fscanf()

在循环中使用以下fscanf(),直到到达文件末尾:

int i,j
double x,y;
while (fscanf(fp, " %d , %f , %f , %d", &i, &x, &y, &j) != EOF) {....}

关于c - 如何在 C 中将文件中的逗号分隔数字读入多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14608754/

相关文章:

c - 引用计数如何工作?

c - 转到 C 中二进制文件的某个点(使用 fseek),然后从该位置读取(使用 fread)

包含数千列的 R fread 文件,在前 10 列之后连接

c - 将文件读入缓冲区,但调用 fseek 后程序在 fread 处崩溃

C++ fseek : Is the first byte at position 0 or 1?

java - C/C++/Java设计问题: Keeping Track of Many Variables by Saving To File and Parsing Afterwards

c - 与 char *foo() 函数关联的内存是否被释放(在 C 中)?

C 结构 : Printing a string member produces weird results

c - 为什么移动缓冲区指针会减慢 fread(C 编程语言)速度?

c - 使用 fwrite/fread 和数据结构的几个问题