c читать float из файла и сортировать - PullRequest
0 голосов
/ 03 мая 2010

У меня проблема с приложением C; у меня есть в файле .txt несколько чисел с плавающей точкой, и я должен прочитать их и отсортировать по убыванию. Когда я выполняю команду fscanf и затем printf, я получаю на экране странные числа (я думаю, это место в памяти). Как я могу решить проблему? Заранее спасибо

Отредактировано Приложение состоит из более чем 1200 строк кода; вот проблема:

.......
fopen=(fp1,"scores.dat","r")
fopen=(fp2, "team_number.dat", "r")
fscanf(fp2,"%d", &x);
for (i=0;i<x;i++) {
fscanf(fp1,"%f", &punteggi)
printf("%3.1f\n", punteggi)
}
......

Ответы [ 2 ]

1 голос
/ 03 мая 2010

Проблема с использованием fscanf () для чтения из файла заключается в том, что он очень чувствителен, если спецификатор форматирования каким-либо незначительным образом не соответствует данным, которые вы либо получаете обратно, либо перезаписываете стек / память. Вы не показываете, как выглядят ваши входные данные, поэтому трудно сказать, как должен выглядеть спецификатор формата ... например, если у вас есть пробелы между ними и если есть символы новой строки - вам может потребоваться указать ширину как хорошо, если у вас нет пробелов между значениями.

Более надежный способ - вместо этого читать с помощью fgets () (или fread), а затем, при необходимости, анализировать строку с помощью strok (), чтобы затем преобразовать токены в нужный тип (atof в вашем случае).

0 голосов
/ 03 мая 2010

Убедитесь, что вы даете lvalue для fscanf (например, не fscanf("...",a);, если a является float, а скорее fscanf("...",&a);)

И это printf читает фактические числа, а не указатели или lvalues.

...