如何从文件中读取未知数量的浮点数?

时间:2012-01-03 21:06:59

标签: c arrays file numbers floating-point

  

可能重复:
  C dynamically growing array

我有一个程序,我需要从文件中读取浮点数。每行是一个浮点数。问题是这个文件可能非常大

 float tab[1000];     
 
 f = fopen ("data.txt", "r");
 i=0;   
 while (feof(f) == 0) {        
   fscanf (f, "%f\n", &tab[i]);                
   i++;    
 }

如果它太小,我如何更改动态数组的大小?

1 个答案:

答案 0 :(得分:6)

如果需要的话,只需从合适的尺码malloc开始,然后realloc开始。

double *tab;
int num = 1000;

tab = malloc(num * sizeof *tab);

while (..) {
    if (i >= num)
        num *= 2;

    tab = realloc(tab, num * sizeof *tab);
    /* ... */
}
  • 您应该尝试覆盖大多数输入的初始大小,而不需要太多内存
  • 您可以尝试不同的realloc策略,将大小加倍只是一个
  • 您应该检查mallocrealloc
  • 的结果