fprintf

Запишите данные к текстовому файлу

Синтаксис

fprintf(fileID,formatSpec,A1,...,An)
fprintf(formatSpec,A1,...,An)
nbytes = fprintf(___)

Описание

пример

fprintf(fileID,formatSpec,A1,...,An) применяет formatSpec ко всем элементам массивов A1,...An в порядке следования столбцов и пишет данные в текстовый файл. fprintf использует схему кодирования, заданную в вызове fopen.

пример

Данные форматов fprintf(formatSpec,A1,...,An) и отображения результаты на экране.

пример

nbytes = fprintf(___) возвращает количество байтов, которые fprintf пишет, с помощью любого из входных параметров в предыдущих синтаксисах.

Примеры

свернуть все

Распечатайте несколько числовых значений и буквенного текста на экран.

A1 = [9.9, 9900];
A2 = [8.8,  7.7 ; ...
      8800, 7700];
formatSpec = 'X is %4.2f meters or %8.3f mm\n';
fprintf(formatSpec,A1,A2)
X is 9.90 meters or 9900.000 mm
X is 8.80 meters or 8800.000 mm
X is 7.70 meters or 7700.000 mm

%4.2f во входном параметре formatSpec указывает, что первое значение в каждой строке вывода является числом с плавающей запятой с шириной поля четырех цифр, включая две цифры после десятичной точки. %8.3f во входном параметре formatSpec указывает, что второе значение в каждой строке вывода является числом с плавающей запятой с шириной поля восьми цифр, включая три цифры после десятичной точки. \n является управляющим символом, который запускает новую строку.

Явным образом преобразуйте с двойной точностью значения с частями к целочисленным значениям.

a = [1.02 3.04 5.06];
fprintf('%d\n',round(a));
1
3
5

%d в formatSpec ввел, распечатывает каждое значение в векторе, round(a), как целое число со знаком. \n является управляющим символом, который запускает новую строку.

Запишите короткую таблицу показательной функции к текстовому файлу под названием exp.txt txt .

x = 0:.1:1;
A = [x; exp(x)];

fileID = fopen('exp.txt','w');
fprintf(fileID,'%6s %12s\n','x','exp(x)');
fprintf(fileID,'%6.2f %12.8f\n',A);
fclose(fileID);

Первый вызов fprintf распечатывает текст заголовка x и exp(x), и второй вызов распечатывает значения от переменного A.

Если вы планируете считать файл с Блокнотом Microsoft®, используйте '\r\n' вместо '\n', чтобы переместиться в новую строку. Например, замените вызовы fprintf со следующим:

fprintf(fileID,'%6s %12s\r\n','x','exp(x)');
fprintf(fileID,'%6.2f %12.8f\r\n',A);

Функции импорта MATLAB®, все приложения UNIX®, и Microsoft Word и WordPad распознают '\n' как индикатор новой строки.

Просмотрите содержимое файла с командой type.

type exp.txt
     x       exp(x)
  0.00   1.00000000
  0.10   1.10517092
  0.20   1.22140276
  0.30   1.34985881
  0.40   1.49182470
  0.50   1.64872127
  0.60   1.82211880
  0.70   2.01375271
  0.80   2.22554093
  0.90   2.45960311
  1.00   2.71828183

Запишите данные к файлу и возвратите количество записанных байтов.

Запишите массив данных, A, к файлу и получите количество байтов, которые пишет fprintf.

A = magic(4);

fileID = fopen('myfile.txt','w');
nbytes = fprintf(fileID,'%5d %5d %5d %5d\n',A)
nbytes = 96

Функция fprintf записала 96 байтов в файл.

Закройте файл.

fclose(fileID);

Просмотрите содержимое файла с командой type.

type('myfile.txt')
   16     5     9     4
    2    11     7    14
    3    10     6    15
   13     8    12     1

Отобразите гиперссылку (веб-сайт MathWorks) на экране.

url = 'https://www.mathworks.com';
sitename = 'The MathWorks Web Site';

fprintf('<a href = "%s">%s</a>\n',url,sitename)

%s во входном параметре formatSpec указывает, что значения переменных url и sitename, должен быть распечатан как текст.

Входные параметры

свернуть все

Идентификатор файла, заданный как одно из следующего:

  • Идентификатор файла получен из fopen.

  • 1 для стандартного вывода (экран).

  • 2 для стандартной погрешности.

Типы данных: double

Формат выходных полей, заданных операторов форматирования использования. formatSpec также может включать обычный текст и специальные символы.

formatSpec может быть вектором символа в одинарных кавычках, или, запускающийся в R2016b, скаляре строки.

Оператор форматирования

Оператор форматирования запускается со знака процента, %, и заканчивается символом преобразования. Символ преобразования требуется. Опционально, можно задать идентификатор, флаги, ширину поля, точность, и выделить подтипы в операторах между % и символом преобразования. (Пробелы недопустимы между операторами и показаны здесь только для удобочитаемости).

Символ преобразования

Эта таблица показывает символы преобразования, чтобы отформатировать числовые и символьные данные как текст.

Тип значенияПреобразованиеДетали

Целое число, подписанное

%d или %i

Основа 10

Целое число, без знака

U

Основа 10

O

Базируйтесь 8 (восьмеричный)

X

Основывайте 16 (шестнадцатеричных), строчных букв af

X

То же самое как %x, прописные буквы AF

Число с плавающей запятой

F

Представление с фиксированной точкой (Используют оператор точности, чтобы задать количество цифр после десятичной точки.)

E

Экспоненциальное представление, такое как 3.141593e+00 (Используют оператор точности, чтобы задать количество цифр после десятичной точки.)

E

То же самое как %e, но верхний регистр, такой как 3.141593E+00 (Используют оператор точности, чтобы задать количество цифр после десятичной точки.)

G

Более компактный из %e или %f, без конечных нулей (Используют оператор точности, чтобы задать количество значительных цифр.)

G

Более компактный из %E или %f, без конечных нулей (Используют оператор точности, чтобы задать количество значительных цифр.)

Символы или строки

C

Отдельный символ

S

Вектор символа или массив строк. Тип синтезируемого текста совпадает с типом formatSpec.

Дополнительные операторы

Дополнительный идентификатор, флаги, ширина поля, точность и операторы подтипа далее задают формат синтезируемого текста.

  • Идентификатор

    Порядок для обработки аргументов входного параметра функции. Используйте синтаксис n$, где n представляет положения других входных параметров в вызове функции.

    Пример: (' %3$s %2$s %1$s %2$s','A', 'B', 'C'), распечатывает входные параметры, 'B', 'C' можно следующим образом: C B B.

    Примечание: Если входной параметр является массивом, вы не можете использовать идентификаторы, чтобы задать конкретные элементы массива от того входного параметра.

  • Флаги

    '–'

    Лево-выровнять по ширине.
    Пример 5. 2f
    Пример: % - 10-е

    '+'

    Всегда распечатывайте символ знака (+ или –) для любого числового значения.
    Пример: % +5.2f
    Право - выравнивает текст.
    Пример: % +10s

    ' '

    Вставьте пробел перед значением.
    Пример 5. 2f

    '0'

    Заполните к ширине поля нулями перед значением.
    Пример: %05.2f

    '#'

    Измените выбранные числовые преобразования:

    • Для %o %x или %X, распечатывает 0, 0x или префикс 0X.

    • Для %f %e или %E, распечатывает десятичную точку, даже когда точность 0.

    • Для %g или %G, не удаляйте конечные нули или десятичную точку.

    Пример 5. 0f

  • Ширина поля

    Минимальное количество символов, чтобы распечатать. Оператор ширины поля может быть номером или звездочкой (*), чтобы относиться к входному параметру.

    Пример: Входные параметры (' %12d', intmax) эквивалентны (' % *d', 12, intmax).

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

  • Точность

    Для %f, %e или %E

    Количество цифр справа от десятичной точки
    Пример: '%.4f' распечатывает пи как '3,1416'

    Для %g или %G

    Количество значительных цифр
    Пример: '%.4g' распечатывает пи как '3,142'

    Оператор точности может быть номером или звездочкой (*), чтобы относиться к аргументу.

    Пример: Входные параметры (' %6.4f', пи) эквивалентны (' % *.*f', 6, 4, пи).

    Примечание

    Если вы задаете оператор точности для значений с плавающей точкой, который превышает точность входного типа числовых данных, результаты не могут совпадать с входными значениями к точности, которую вы задали. Результат зависит от вашего компьютерного оборудования и операционной системы.

  • Подтипы

    Можно использовать оператор подтипа, чтобы распечатать значение с плавающей точкой как его восьмеричное, десятичное, или шестнадцатеричное значение. Оператор подтипа сразу предшествует символу преобразования. Эта таблица показывает преобразования, которые могут использовать подтипы.

    Тип входного значения

    Подтип и символ преобразования

    Тип выходного значения

    Число с плавающей запятой

    %bx или %bX
    %bo
    %bu

    С двойной точностью шестнадцатеричное, восьмеричное, или десятичное значение
    Пример: %bx распечатывает пи как 400921fb54442d18

    %tx или %tX
    %to
    %tu

    Шестнадцатеричное, восьмеричное, или десятичное значение с одинарной точностью
    Пример: %tx распечатывает пи как 40490fdb

Текст прежде или после операторов форматирования

formatSpec может также включать дополнительный текст перед знаком процента, %, или после символа преобразования. Текст может быть:

  • Обычный текст, чтобы распечатать.

  • Специальные символы, которые вы не можете ввести как обычный текст. Эта таблица показывает, как представлять специальные символы в formatSpec.

    Специальный символ

    Представление

    Единственная кавычка

    ''

    Символ процента

    %%

    Наклонная черта влево

    \\

    Предупреждение

    A

    Клавиша Backspace

    B

    Перевод формата

    F

    Новая строка

    N

    Возврат каретки

    R

    Горизонтальная вкладка

    T

    Вертикальная вкладка

    V

    Символ, числовое значение Unicode® которого может быть представлено шестнадцатеричным номером, N

    \xN

    Пример: sprintf ('\x5A') возвращает 'Z'

    Символ, числовое значение Unicode которого может быть представлено восьмеричным числом, N

    N

    Пример: sprintf ('\132') возвращает 'Z'

Известное поведение преобразований с операторами форматирования

  • Числовые преобразования распечатывают только действительный компонент комплексных чисел.

  • Если вы задаете преобразование, которое не соответствует данным, таким как текстовое преобразование для числового значения, MATLAB заменяет заданное преобразование и использует %e.

    Пример: '%s' преобразовывает пи в 3.141593e+00.

  • Если вы применяете текстовое преобразование (или %c или %s) к целочисленным значениям, MATLAB преобразовывает значения, которые соответствуют кодам допустимого символа к символам.

    Пример: '%s' преобразовывает [65 66 67] к ABC.

Типы данных: char | string

Числовой или символьные массивы, заданные как скаляр, вектор, матрица или многомерный массив.

Типы данных: единственный | удваиваются | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | логический | char

Выходные аргументы

свернуть все

Количество байтов, которые пишет fprintf, возвратилось как скаляр. При записи в файл nbytes определяется кодировкой символов. При печати данных на экран nbytes является количеством символов, отображенных на экране.

Советы

  • Спецификаторы формата для функций чтения sscanf и fscanf отличаются от форматов для функций записи sprintf и fprintf. Функции чтения не поддерживают поле точности. Поле width задает минимум для записи, но максимум для чтения.

Ссылки

[1] Керниган, B. W., и Д. M. Ричи, язык программирования C, второй выпуск, Prentice-Hall, Inc., 1988.

[2] Спецификация X3.159-1989 ANSI: “Язык программирования C”, ANSI, 1 430 Broadway, Нью-Йорк, Нью-Йорк 10018.

Расширенные возможности

Представлено до R2006a

Была ли эта тема полезной?