Иллюстрированный самоучитель по MatLab

Операции над форматированными файлами

  • [A,count] = fscanf(fid.format,size) – считывает количество данных, определенное параметром size, преобразует их в соответствии с параметром format и возвращает вместе с количеством успешно считанных элементов count. Параметр size – это произвольный аргумент, определяющий количество считываемых данных. Допустимы следующие значения:
    • n – чтение п элементов в вектор-столбец;
    • inf – чтение элементов до конца файла и помещение их в вектор-столбец, содержащий такое же количество элементов, что и в файле;
    • [m,n] – считывает столько элементов, сколько требуется для заполнения матрицы размера тхп. Заполнение происходит по столбцам. Величина n (но нет!) может принимать значение Inf.

Строка format состоит из обычных символов и (или) спецификаторов. Спецификаторы указывают тип считываемых данных и включают символ %, опцию ширины поля и символы формата. Возможные символы формата перечислены в табл. 19.4.

Таблица 19.4. Символы формата, используемые функцией fscanf.

Символ Описание
%c Последовательность символов; параметр ширины поля определяет количество считываемых символов
%d Десятичное число
%e, %f, %g Число с плавающей точкой
%i Целое число со знаком
%o Восьмеричное число со знаком
%s Последовательность непробельных символов
%u Десятичное целое число со знаком
%x Шестнадцатеричное целое число со знаком
[…] Последовательность символов

Между символом % и символом формата допустимо вставлять следующие символы:

  • звездочка (*) означает, что соответствующее значение не нужно сохранять в выходной матрице;
  • строка цифр задает максимальную ширину поля;
  • буква обозначает размер полученного объекта: h для короткого целого числа (например, %n d), 1 для длинного целого числа (например, %1d) или для числа с двойной точностью с плавающей запятой (например, % lg).

Примеры:

>> x = 0:pi/10:pi:y-[x:sin(x)];
>> fid = fopent 'c:\sin.txt'. V);
>> fprintf(fid.'X5.3f *10.6f\n'.y):fclose(fid);
0.000 0.000000
0.314 0.309017
0.628 0.587785
0.942 0.809017
1.257 0.951057
1.571 1.000000
1.885 0.951057
2.199 0.809017
2.513 0.587785
2.827 0.309017
3.142 0.000000
>> fid = fopen('c:\sin.txt'.'r');
>> q=fscanf(fid.'*g'.[2.10]):
>> q
ans =
0 0
0.3140 0.3090
0.6280 0.5878
0.9420 0.8090
1.2570 0.9511
1.5710 1.0000
1.8850 0.9511
2.1990 0.8090
2.5130 0.5878
2.8270 0.3090
>> fgetl(fid)
ans =
3.142 0.000000
>> fgets(fid)
ans =
-1
>> fclose(fid)
ans=
0
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.