Данные о формате в строку или вектор символов
форматирует данные в массивах str = sprintf(formatSpec,A1,...,An)A1,...,An использование операторов форматирования задано formatSpec и возвращает получившийся текст в str. sprintf функциональные форматы значения в A1,...,An в порядке следования столбцов. Если formatSpec строка, затем так выход str. В противном случае, str вектор символов.
Чтобы возвратить несколько частей форматированного текста как массив строк или массив ячеек из символьных векторов, используйте compose функция.
[ возвращает сообщение об ошибке как вектор символов, когда операция неудачна. В противном случае, str,errmsg]
= sprintf(formatSpec,A1,...,An)errmsg isempty.
переводит последовательности символа ESC в str = sprintf(literalText)literalText, такой как \n и \t. Это возвращает все другие неизменные символы. Если literalText содержите оператор форматирования (такой как %f), затем str отбрасывания это и все символы после.
Отформатируйте число с плавающей запятой с помощью %eF, и %g спецификаторы.
A = 1/eps;
str_e = sprintf('%0.5e',A)str_e = '4.50360e+15'
str_f = sprintf('%0.5f',A)str_f = '4503599627370496.00000'
str_g = sprintf('%0.5g',A)str_g = '4.5036e+15'
Объедините буквенный текст со значениями массивов, чтобы создать вектор символов.
formatSpec = 'The array is %dx%d.';
A1 = 2;
A2 = 3;
str = sprintf(formatSpec,A1,A2)str = 'The array is 2x3.'
Чтобы возвратить форматированный текст как строку, задайте formatSpec как строка вместо вектора символов, когда вы вызываете sprintf функция.
Начиная в R2017a, можно создать строки с помощью двойных кавычек. Преобразуйте данные и возвратите результат как строку.
formatSpec = "The current time is: %d:%d %s"; A1 = 11; A2 = 20; A3 = 'a.m.'; str = sprintf(formatSpec,A1,A2,A3)
str = "The current time is: 11:20 a.m."
Преобразуйте входную строку. Входные массивы, которые содержат текст или могут быть векторами символов или строками.
A1 = 2;
A2 = 35;
A3 = "p.m.";
str = sprintf(formatSpec,A1,A2,A3)str = "The current time is: 2:35 p.m."
Явным образом преобразуйте значения с двойной точностью в целые числа.
str = sprintf('%d',round(pi))str = '3'
Задайте минимальную ширину печатного значения.
str = sprintf('%025d',[123456])str = '0000000000000000000123456'
0 отметьте в %025d спецификатор формата запрашивает начальные нули в выходе.
Переупорядочьте входные значения с помощью n$ идентификатор положения.
A1 = 'X'; A2 = 'Y'; A3 = 'Z'; formatSpec = ' %3$s %2$s %1$s'; str = sprintf(formatSpec,A1,A2,A3)
str = ' Z Y X'
C = { 1, 2, 3 ;
'AA','BB','CC'};
str = sprintf(' %d %s',C{:})str = ' 1 AA 2 BB 3 CC'
Синтаксис C{:} создает список, разделенный запятыми массивов, которые содержат содержимое каждой ячейки от C в порядке следования столбцов. Например, C{1}==1 и C{2}=='AA'.
formatSpec — Формат выходных полейФормат выходных полей, заданных операторов форматирования использования. formatSpec также может включать обычный текст и специальные символы.
formatSpec может быть вектор символов в одинарных кавычках, или, запускающийся в R2016b, скаляре строки.
Оператор форматирования
Оператор форматирования запускается со знака процента, %, и концы с символом преобразования. Символ преобразования требуется. Опционально, можно задать идентификатор, флаги, ширину поля, точность, и выделить подтипы в операторах между % и символ преобразования. (Пробелы недопустимы между операторами и показаны здесь только для удобочитаемости).

Символ преобразования
Эта таблица показывает символы преобразования, чтобы отформатировать числовые и символьные данные как текст.
| Тип значения | Преобразование | Детали |
|---|---|---|
Целое число, подписанное |
| Основа 10 |
Целое число, без знака |
| Основа 10 |
| Базируйтесь 8 (восьмеричный) | |
| Основывайте 16 (шестнадцатеричных), строчных букв | |
| То же самое как | |
Число с плавающей запятой |
| Представление с фиксированной точкой (Используют оператор точности, чтобы задать количество цифр после десятичной точки.) |
| Экспоненциальное представление, такое как | |
| То же самое как | |
| Более компактный из | |
| Более компактный из | |
Символы или строки |
| Отдельный символ |
| Вектор символов или массив строк. Тип синтезируемого текста совпадает с типом |
Дополнительные операторы
Дополнительный идентификатор, флаги, ширина поля, точность и операторы подтипа далее задают формат синтезируемого текста.
Идентификатор
Порядок для обработки входных аргументов функции. Используйте синтаксис , где n$n представляет положения других входных параметров в вызове функции.
Пример: ('%3$s %2$s %1$s %2$s','A','B','C') входные параметры печати 'A'BC можно следующим образом: C B A B.
Примечание: Если входной параметр является массивом, вы не можете использовать идентификаторы, чтобы задать конкретные элементы массива от того входного параметра.
Флаги
| Лево-выровнять по ширине. |
| Всегда распечатывайте символ знака (+ или –) для любого числового значения. |
| Вставьте пробел перед значением. |
'0' | Заполните к ширине поля нулями перед значением. |
| Измените выбранные числовые преобразования:
Пример: |
Ширина поля
Минимальное количество символов, чтобы распечатать. Оператор ширины поля может быть номером или звездочкой (*) относиться к входному параметру.
Когда вы задаете * как оператор ширины поля, другие входные параметры должны обеспечить и ширину и значение, которое будет распечатано. Ширины и значения могут быть парами аргументов или парами в числовом массиве. С * как оператор ширины поля, можно распечатать различные значения с различными ширинами.
Пример: входные параметры ('%12d',intmax) эквивалентны ('%*d',12,intmax).
Пример: входные параметры ('%*d',[2 10 5 100]) возвратите '10 100', с двумя местами, выделенными для 10 и пять пробелов для 100. Как альтернатива, также можно задать ширину поля и значения в качестве нескольких аргументов, в качестве в ('%*d',2,10,5,100).
Функция заполняет к ширине поля пробелами перед значением, если в противном случае не задано флагами.
Точность
Для | Количество цифр справа от десятичной точки |
Для | Количество значительных цифр |
Оператор точности может быть номером или звездочкой (*) относиться к аргументу.
Когда вы задаете * как полевой оператор точности, другие входные параметры должны обеспечить и точность и значение, которое будет распечатано. Точность и значения могут быть парами аргументов или парами в числовом массиве. С * как оператор точности, можно распечатать различные значения к различной точности.
Когда вы задаете *.* как ширина поля и операторы точности, необходимо задать ширину поля, точность и значения как триплеты.
Пример: входные параметры ('%.4f',pi) эквивалентны ('%.*f',4,pi).
Пример: входные параметры ('%6.4f',pi) эквивалентны ('%.*f',6,4,pi).
Пример: входные параметры ('%*.*f',6,4,pi,9,6,exp(1)) возвратите '3.1416 2.718282', с 9 и 6 как ширина поля и точность для выхода exp(1).
Если вы задаете оператор точности для значений с плавающей точкой, который превышает точность входного типа числовых данных, результаты не могут совпадать с входными значениями к точности, которую вы задали. Результат зависит от вашего компьютерного оборудования и операционной системы.
Подтипы
Можно использовать оператор подтипа, чтобы распечатать значение с плавающей точкой как его восьмеричное, десятичное, или шестнадцатеричное значение. Оператор подтипа сразу предшествует символу преобразования. Эта таблица показывает преобразования, которые могут использовать подтипы.
Тип входного значения | Подтип и символ преобразования | Тип выходного значения |
|---|---|---|
Число с плавающей запятой |
| С двойной точностью шестнадцатеричное, восьмеричное, или десятичное значение |
| Шестнадцатеричное, восьмеричное, или десятичное значение с одинарной точностью |
Текст прежде или после операторов форматирования
formatSpec может также включать дополнительный текст перед знаком процента, %, или после символа преобразования. Текст может быть:
Обычный текст, чтобы распечатать.
Специальные символы, которые вы не можете ввести как обычный текст. Эта таблица показывает, как представлять специальные символы в formatSpec.
Специальный символ | Представление |
|---|---|
Одна кавычка |
|
Символ процента |
|
Обратная косая черта |
|
Предупреждение |
|
Клавиша Backspace |
|
Перевод формата |
|
Новая строка |
|
Возврат каретки |
|
Горизонтальная вкладка |
|
Вертикальная вкладка |
|
Символ, числовое значение Unicode® которого может быть представлено шестнадцатеричным номером, |
Пример: |
Символ, числовое значение Unicode которого может быть представлено восьмеричным числом, |
Пример: |
Известное поведение преобразований с операторами форматирования
Числовые преобразования распечатывают только действительный компонент комплексных чисел.
Если вы задаете преобразование, которое не соответствует данным, таким как текстовое преобразование для числового значения, MATLAB® заменяет заданное преобразование и использует %e.
Примеры преобразует pi к 3.141593e+00.
Если вы применяете текстовое преобразование (любой %c или %s) к целочисленным значениям MATLAB преобразует значения, которые соответствуют кодам допустимого символа к символам.
Примеры преобразует [65 66 67] к ABC.
Типы данных: char | string
A1,...,An — Числовой, символ или строковые массивыЧисловой, символ или строковые массивы.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string
literalText — Введите текст, не форматируя операторыВведите текст, не форматируя операторы, заданные как вектор символов, или представьте скаляр в виде строки. sprintf переводит любые последовательности символа ESC в literalText.
Типы данных: char | string
str — Форматированный текстФорматированный текст, возвращенный как вектор символов или скаляр строки. Тип выхода совпадает с типом formatSpec.
errmsg — Сообщение об ошибкеСообщение об ошибке, возвращенное как вектор символов, когда операция неудачна. В противном случае, errmsg isempty.
sprintf функция похожа на fprintf, но fprintf печать к файлу или к Командному окну.
Спецификаторы формата для чтения функционируют sscanf и fscanf отличайтесь от форматов для функций записи sprintf и fprintf. Функции чтения не поддерживают поле точности. Поле width задает минимум для записи, но максимум для чтения.
[1] Керниган, B. W., и Д. М. Ричи, язык программирования C, второй выпуск, Prentice-Hall, Inc., 1988.
[2] Спецификация X3.159-1989 ANSI: “Язык программирования C”, ANSI, 1 430 Broadway, Нью-Йорк, NY 10018.
Указания и ограничения по применению:
formatSpec параметр должен быть постоянным.
В formatSpec, шестнадцатеричные числа должны быть в области значений [0 7F], и восьмеричные числа должны быть в области значений [0 177].
Если все входные массивы являются постоянными, генератор кода оценивает sprintf вызовите в MATLAB во время компиляции. В этом случае, ограничения генерации кода для sprintf не применяйтесь и поведение sprintf в сгенерированном коде совпадает с поведением в MATLAB.
Если внешние вызовы не возможны, генератор кода производит код С для sprintf. Внешние вызовы не возможны, когда внешние вызовы отключены или когда sprintf называется в parfor цикл.
Поведение sprintf в сгенерированном коде совпадает с поведением компилятора C вместо поведения MATLAB в этих случаях:
Спецификатор формата имеет соответствующий спецификатор формата C, например, %e или %E.
sprintf вызов в parfor цикл.
Отключены внешние вызовы.
Эти опции и возможности не поддержаны:
n$ идентификатор положения для переупорядочения входных значений
Печать массивов
Используя подтипы, чтобы распечатать число с плавающей запятой как его восьмеричное, десятичное, или шестнадцатеричное значение
Когда вы вызываете sprintf со спецификатором формата %s, вы не можете поместить нулевой символ посреди вектора вводимого символа. Чтобы записать нулевой символ, используйте sprintf(fid, '%c', char(0)).
Типы входного параметра должны совпадать со своими типами формата. Например, если n двойное, генерация кода не позволяет следующий код:
str = sprintf('%d',n)Для генерации кода, сначала бросает n к типу целого числа со знаком, такому как int8.
str = sprintf('%d',int8(n))Когда вы вызываете sprintf со спецификатором целочисленного формата тип целочисленного аргумента должен быть типом, который целевой компьютер может представлять как нативный тип C. Например, если вы вызываете sprintf('%d', int64(n)), затем целевой компьютер должен иметь нативный тип C, который поддерживает 64-битное целое число.
Динамическое выделение памяти должно быть включено.
Указания и ограничения по применению:
Эта функция принимает массивы графического процессора, но не работает на графическом процессоре.
Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox).
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.