Как узнать количество поплавков в файле? - PullRequest
1 голос
/ 27 января 2012

У меня есть файл с числами с плавающей запятой, вот пример:

0.01
0.24
0.08
0.15
0.7
0.22
0.05
0.28
0.4
0.44
0.8
0.55

Теперь мне нужно получить количество всех поплавков (в данном случае 12). Пустых строк следует избегать.

Я сделал это:

  FILE *f, *junk;
  if (MYTHREAD == 0) {
    f = fopen ("dane.dat", "r");    
    junk = fopen ("/dev/null", "w");    

    for(size = 0; fscanf(f, "%f\n", junk) != EOF; ++size);

    fclose(junk);
    fclose(f);
  }

и он возвращает мне 128 O_o. Что не так?

1 Ответ

5 голосов
/ 27 января 2012

Вы не проверяете, читал ли fscanf float.Используйте тот факт, что он возвращает номер прочитанного элемента.

Кроме того, не читайте FILE*читать float*.

Этот код должен работать:

float o;
int i,size=0;
while ((i=fscanf(f,"%f",&o))!=EOF) size+=i;
...