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

在C中如何将逗号分隔的数字从文件读入多维数组,c,fread,fseek,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, 10

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

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, 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 第一列是每行的编号,因此我需要的数据实际上是接下来的三列。
我的问题是:

  • 因为我不知道数组的维数,所以我必须首先读取最后一行的第一个数字。怎么做?我试图使用fseek将文件指针指向文件的结尾,然后找到前面的“\n”,但我不知道如何处理逗号
  • 得到行数后,如何将需要的数据读入N_row*3数组?如何处理逗号和“\n” 提前谢谢你的帮助

    您可以使用
    fscanf()

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

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

    列的数量是固定的?是的,列的数量是固定的。这必须是重复的,对吗?你说的“重复”是什么意思?意味着以前有人问过这个问题,而且这个网站上可能已经有答案了谢谢!我应该在while循环中将x、y、j分别指定给myarray[I][0]、myarray[I[1]、myarray[I][2]吗?我只是尝试了一下,但没有成功:(对不起,我犯了一个错误。它工作得很好!非常感谢!顺便问一下,关于如何读取最后一列的第一个数字,你能给我一个提示吗?你不需要这个部分“%*[^\n]”。只需阅读下一个“%d”,将忽略“\n”。谢谢Mohamed KALLEL和Alex Oliveira。这是我见过的解决问题的最简单方法。