Diferencia entre revisiones de «sprintf()»

De ArduWiki
Saltar a: navegación, buscar
(Ejemplo 2)
(Ejemplo 2)
Línea 45: Línea 45:
 
printf("[%s] is a string %d chars long\n",buffer,n);
 
printf("[%s] is a string %d chars long\n",buffer,n);
 
}
 
}
 +
</syntaxhighlight>
  
 
== Ejemplo 3 ==
 
== Ejemplo 3 ==

Revisión del 18:42 13 jul 2018

Descripción

Escribir datos formateados en una cadena Compone una cadena con el mismo texto que se imprimirá si se usó el formato en printf, pero en lugar de imprimirse, el contenido se almacena como una cadena C en el búfer señalado por str .

Sintaxis

sprintf(str, formato, argumentos);

Parámetros

str
Puntero a un buffer donde se almacena el C-string resultante.

El buffer debe ser lo suficientemente grande como para contener la cadena resultante.

formato
Cadena que contiene una cadena de formato que sigue las mismas especificaciones que el formato en printf. Puedes representar int (%d), long (%ld) y cadenas (%s).
argumentos
Dependiendo de la cadena de formato , la función puede esperar una secuencia de argumentos adicionales, cada uno con un valor que se utilizará para reemplazar un especificador de formato en la cadena de formato (o un puntero a una ubicación de almacenamiento, para n ).

Debe haber al menos tantos de estos argumentos como la cantidad de valores especificados en los especificadores de formato .

Retorno

En caso de éxito, se devuelve la cantidad total de caracteres escritos. Este recuento no incluye el carácter nulo adicional adjuntado automáticamente al final de la cadena. En caso de falla, se devuelve un número negativo.

Advertencias

  • La función ignora argumentos adicionales.
  • El tamaño del búfer debe ser lo suficientemente grande como para contener toda la cadena resultante (ver snprintf para una versión más segura).
  • Un carácter nulo de terminación se agrega automáticamente después del contenido.
  • Después del parámetro de formato, la función espera al menos tantos argumentos adicionales como sea necesario para el formato.
  • No maneja float pero lo puedes imitar con dos enteros.

Ejemplo 1

Esto tiene 3 enteros de 2 dígitos con ceros a la izquierda, separados por ":". La lista de parámetros, hora, minuto, segundo, proporciona los números con los que se imprime el sprintf.

char buffer[50];
byte hora = 13;
byte min = 2;
byte seg = 18;
sprintf(buffer, "% 02d:% 02d:% 02d", hora, min, seg);  //13:02:18
sprintf(buffer, "Son las %d horas %d minutos %d segundos.", hora, min, seg);  //Son las 13 horas 2 minutos 18 segundos.

Ejemplo 2

char buffer[50];
int n, a=5, b=3;
n = sprintf(buffer, "%d plus %d is %d", a, b, a+b);
printf("[%s] is a string %d chars long\n",buffer,n);
}

Ejemplo 3

char buffer[30];
char buf1[6];
float mfloat = 23.245;
dostrf(mfloat, 5, 2, buf1);
sprintf(buffer,"Float %s", buf1);
Serial.print(buffer);
}

Vea también

Referencias