Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

sprintf

Formatear datos en cadena

Descripción

ejemplo

str = sprintf(formatSpec,A1,...,An) da formato a los datos de las matrices A1,...,An de acuerdo con formatSpec en orden de columna y devuelve los resultados a str.

[str,errmsg] = sprintf(formatSpec,A1,...,An) devuelve un mensaje de error como vector de carácter cuando la operación no tiene éxito. De lo contrario, errmsg está vacío.

Ejemplos

contraer todo

Formatee un número de punto flotante utilizando los especificadores de %e, %fy %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'

Combine texto literal con valores de matriz para crear un vector de caracteres.

formatSpec = 'The array is %dx%d.';
A1 = 2;
A2 = 3;
str = sprintf(formatSpec,A1,A2)
str = 
'The array is 2x3.'

Para devolver el texto formateado como una cadena, especifique formatSpec como una cadena en lugar de un vector de caracteres cuando llame a la función sprintf .

A partir de R2017a, puede crear cadenas mediante comillas dobles en lugar de la función string . Convierte los datos y devuelve el resultado como una cadena.

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."

Convertir la cadena de entrada. Las matrices de entrada que contienen texto pueden ser vectores de caracteres o cadenas.

A1 = 2;
A2 = 35;
A3 = "p.m.";
str = sprintf(formatSpec,A1,A2,A3)
str = 
"The current time is: 2:35 p.m."

Convertir explícitamente los valores de doble precisión en enteros.

str = sprintf('%d',round(pi))
str = 
'3'

Especifique el ancho mínimo del valor impreso.

str = sprintf('%025d',[123456])
str = 
'0000000000000000000123456'

El marcador 0 del especificador de formato %025d solicita ceros principales en la salida.

Vuelva a ordenar los valores de entrada mediante el identificador de posición 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'

La sintaxis C{:} crea una lista separada por comas de matrices que contienen el contenido de cada celda de C en orden de columna. Por ejemplo, C{1}==1 y C{2}=='AA'.

Argumentos de entrada

contraer todo

Formato de los campos de salida, especificados mediante operadores de formato. formatSpec también puede incluir texto ordinario y caracteres especiales.

formatSpec puede ser un vector de caracteres en comillas simples o, a partir de R2016b, un escalar de cadena.

Operador de formato

Un operador de formato comienza con un signo de porcentaje, %y termina con un carácter de conversión. Se requiere el carácter de conversión. Opcionalmente, puede especificar identificadores, marcadores, ancho de campo, precisión y operadores de subtipos entre % y el carácter de conversión. (los espacios no son válidos entre los operadores y se muestran aquí sólo para legibilidad).

Carácter de conversión

Esta tabla muestra los caracteres de conversión para formatear datos numéricos y de caracteres como texto.

Tipo de valorConversiónDetalles

Entero, firmado

o

Base 10

Entero, no firmada

%u

Base 10

%o

Base 8 (octal)

%x

Base 16 (hexadecimal), letras en minúscula af

%X

Igual que %x, mayúsculas AF

Número de punto flotante

%f

Notación de punto fijo (utilice un operador de precisión para especificar el número de dígitos después del punto decimal.)

%e

Notación exponencial, como 3.141593e+00 (utilice un operador de precisión para especificar el número de dígitos después del punto decimal).

%E

Igual que %e, pero en mayúsculas, como 3.141593E+00 (utilice un operador de precisión para especificar el número de dígitos después del punto decimal).

%g

El más compacto de %e o %f, sin ceros que se arrastran (utilice un operador de precisión para especificar el número de dígitos significativos.)

%G

El más compacto de %E o %f, sin ceros que se arrastran (utilice un operador de precisión para especificar el número de dígitos significativos.)

Caracteres o cadenas

%c

Carácter único

%s

Vector de caracteres o matriz de cadenas. El tipo del texto de salida es el mismo que el tipo de formatSpec.

Operadores opcionales

Los operadores de identificador, indicadores, ancho de campo, precisión y subtipos opcionales definen aún más el formato del texto de salida.

  • Identificador

    Para procesar los argumentos de entrada de función. Utilice la sintaxis n$, donde n representa las posiciones de los otros argumentos de entrada de la llamada a la función.

    Ejemplo: ('%3$s %2$s %1$s %2$s','A','B','C') imprime argumentos de entrada 'A', 'B', 'C' de la siguiente manera: C B A B.

    Nota: Si un argumento de entrada es una matriz, no puede utilizar identificadores para especificar elementos de matriz concretos a partir de ese argumento de entrada.

  • Banderas

    '–'

    Izquierdo-justifique.
    Ejemplo: Ejemplo:

    '+'

    Imprima siempre un carácter de signo (+ o –) para cualquier valor numérico.
    Ejemplo: %+5.2f
    Derecho-justifique el texto.
    Ejemplo: %+10s

    ' '

    Inserte un espacio antes del valor.
    Ejemplo: % 5.2f

    '0'

    Pad a ancho de campo con ceros antes del valor.
    Ejemplo: %05.2f

    '#'

    Modificar las conversiones numéricas seleccionadas:

    • Para %o, %x o %X, imprime 0, 0x, o 0X prefijo.

    • Para %f, %eo %E, imprima el punto decimal incluso cuando la precisión sea 0.

    • Para %g o %G, no elimine los ceros que se arrastran ni el punto decimal.

    Ejemplo:

  • Ancho de campo

    Número mínimo de caracteres que se imprimirán. El operador de ancho de campo puede ser un número o un asterisco (*) para hacer referencia a un argumento de entrada.

    Ejemplo: Los argumentos de entrada ('%12d',intmax) son equivalentes a ('%*d', 12, intmax).

    Las teclas de función a ancho de campo con espacios antes del valor a menos que los marcadores especifiquen lo contrario.

  • Precision

    Para %f, %eo %E

    Número de dígitos a la derecha del punto decimal
    ejemplo: '%.4f' imprime pi como '3.1416'

    Para %g o %G

    Número de dígitos significativos
    ejemplo: '%.4g' imprime pi como '3.142'

    El operador de precisión puede ser un número, o un asterisco (*) para hacer referencia a un argumento.

    Ejemplo: Los argumentos de entrada ('%6.4f', pi) son equivalentes a ('%*.*f', 6, 4, pi).

    Nota

    Si especifica un operador de precisión para valores de punto flotante que exceda la precisión del tipo de datos numéricos de entrada, los resultados podrían no coincidir con los valores de entrada a la precisión especificada. El resultado depende del hardware de su computadora y del sistema operativo.

  • Subtipos

    Puede utilizar un operador de subtipo para imprimir un valor de punto flotante como valor octal, decimal o hexadecimal. El operador de subtipos precede inmediatamente al carácter de conversión. Esta tabla muestra las conversiones que pueden utilizar subtipos.

    Tipo de valor de entrada

    Subtipo y carácter de conversión

    Tipo de valor de salida

    Número de punto flotante

    o

    Hexadecimal de doble precisión, octal o valor decimal
    ejemplo: %bx imprime pi como 400921fb54442d18

    o

    Hexadecimal de precisión simple, octal o valor decimal
    ejemplo: %tx imprime pi como 40490fdb

Texto antes o después de los operadores de formato

formatSpec también puede incluir texto adicional antes de un signo de porcentaje, %o después de un carácter de conversión. El texto puede ser:

  • Texto ordinario a imprimir.

  • Caracteres especiales que no se pueden introducir como texto ordinario. En esta tabla se muestra cómo representar caracteres especiales en formatSpec.

    Carácter especial

    Representación

    Marca de comilla única

    ''

    Carácter porcentual

    %%

    Barra invertida

    \\

    Alarma

    \a

    Retroceso

    \b

    Feed de formularios

    \f

    Nueva línea

    \n

    Retorno de carro

    \r

    Solapa horizontal

    \t

    Ficha vertical

    \v

    Carácter cuyo valor numérico Unicode® puede representar el número hexadecimal, N

    \xN

    Ejemplo: sprintf('\x5A') devuelve 'Z'

    Carácter cuyo valor numérico Unicode se puede representar por el número octal, N

    \N

    Ejemplo: sprintf('\132') devuelve 'Z'

Comportamiento notable de las conversiones con los operadores de formato

  • Las conversiones numéricas sólo imprimen el componente real de números complejos.

  • Si especifica una conversión que no se ajusta a los datos, como una conversión de texto para un valor numérico, MATLAB® reemplaza la conversión especificada y utiliza %e.

    Ejemplo: '%s' convierte pi a 3.141593e+00.

  • Si se aplica una conversión de texto (ya sea %c o %s) a valores enteros, MATLAB convierte valores que corresponden a códigos de caracteres válidos a caracteres.

    Ejemplo: '%s' convierte [65 66 67] a ABC.

Tipos de datos: char | string

Arrays numéricos, de caracteres o de cadenas.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string

Argumentos de salida

contraer todo

Texto formateado, devuelto como un vector de carácter o un escalar de cadena. El tipo de salida coincide con el tipo de formatSpec.

Mensaje de error, devuelto como vector de carácter, cuando la operación no tiene éxito. De lo contrario, errmsg está vacío.

Sugerencias

  • La función sprintf es similar a fprintf, pero fprintf imprime en un archivo o en la ventana de comandos.

  • Los especificadores de formato para las funciones de lectura sscanf y fscanf difieren de los formatos de las funciones de escritura sprintf y fprintf. Las funciones de lectura no admiten un campo de precisión. El campo width especifica un mínimo para la escritura, pero un máximo para la lectura.

Referencias

[1] Kernighan, B. W., and D. M. Ritchie, The C Programming Language, Second Edition, Prentice-Hall, Inc., 1988.

[2] ANSI specification X3.159-1989: “Programming Language C,” ANSI, 1430 Broadway, New York, NY 10018.

Capacidades ampliadas

Consulte también

| | | | | |

Introducido antes de R2006a