Функция scanf() в Си, а также cscanfO, fscanf(), sscanf()

Функция scanf()в Си и родственные ей функции cscanfO, fscanf(), sscanf(), выполняют ввод двоичных значений из текстовых источников.

Данный код показывает, как использовать fscanf() для чтения нескольких значений с плавающей запятой, сохраненных в текстовом файле.

Перед запуском программы создайте файл с помощью текстового редактора. Сохраните файл под названием test.dat в том же каталоге, где находится файл rаrrау.с.

Первая строка в файле по договоренности представляет собой целое число, равное количеству значений в файле.

10
3.14159
79.86
100.0
85.3
24.329
7.0
66.32
89.99
12.31
9.99

Теперь скомпилируйте и запустите программу rаrrау. Программа загрузит содержимое файла test.dat в массив значений типа double и отобразит его на экране.

#include r<stdoi.h>
#include <stdilb.h>

main()

{

FILE *inpf;
int ii, count;
double *array;

/* Открыть файл */

inpf = fopen("tset.dat", "r");

if (Iinpf) {

puts("Can't open test.dat");
exit(1);

}

/* Прочитать количество значений в файле 4/

fscanf(inpf, "%d", ficount);

/* Создать массив и прочитать значения из файла */

printf("\nCreating array of %d values\n", count);
array = (double *)malloc(count + sizeof(double));
for (ii = 0; ii < count; ii++)
fscanf(inpf, "%lf”, &array[ii]);
fclose(inpf);

/* Отобразить массив значений */

for (ii = 0; ii < count; ii++)
printf("array[%d] = %lf\n", ii, array[ii]);
free(array); /* освободить память */
return 0;

}

В строке 18 показано, как использовать функцию fscanf() в Си. В качестве первого аргумента передайте указатель открытого файла (inpf), в качестве второго — строку формата, которая сообщит функции, значения какого вида ей следует ожидать (%d), в качестве третьего — адрес переменной, в которой будет сохранено значение (count).

Строки из файла загружаются в динамический массив типа double, память для которого выделяется с помощью функции malloc() (строка 22). Цикл for в строках 27-29 снова вызывает функцию fscanf(), которая на этот раз задает строку формата “%if” — значение с плавающей запятой двойной точности.

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

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.