Autor Tema: formateo con printf  (Leído 5675 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: formateo con printf
« Respuesta #15 en: 12 de Enero de 2012, 11:06:32 »
....
Código: [Seleccionar]
char cadena[30]; //declara una cadena de 29 caracteres más su null char
char variable;
int8 pos_ram;

sprintf(cadena, "Vel: %03.0f    #: %2u    Alt: %04.0f ", atof(velocidad_km), atoi(satelite), atof(altitud));
//El sprintf arma la cadena normalmente sin usar puntero a cadena (ya que cadena sin índice ya es puntero)

//Para acceder a cada char de la cadena solo hay que apuntarlo con un índice
variable=cadena[0]; //primer char de la cadena
variable=cadena[15]; //char en la posición 16 de la cadena

//Para obtener la dirección ram de un char contenido en la cadena
pos_ram=&cadena[0]; //dir. ram del primer char de la cadena
pos_ram=&cadena[15]; //dir. ram del char 16 de la cadena


Para limpiar una cadena solo hay que poner su primer char con un NULL char:

Código: [Seleccionar]
cadena[0]=NULL;

De esa forma cualquier función que manipule cadenas se detendrá al encontrar el NULL char desde el principio.

El poner el código ' ' significa insertar un Espacio en ese char, lo que se interpreta como un ascii 0x20. Debes ser cuidadoso al armar cadenas; siempre deben llevar un NULL char (0x00) para indicar dónde termina la cadena.

....

el uso de NULL me ha sido útil para resolver una problema que se me venía presentando al imprimir arrays
en mi ejemplo declaraba un arreglo tipo char


char variable[15];
...
printf("%s\r\n", variable);
...

el resultado de printf era impredecible, puesto que la cadena resultante pasaba de 15. La solución fue añadir el NULL

char variable[16];
variable[15]=NULL;
...
printf("%s\r\n", variable);
...


...
printf("%s\r\n", variable);
...

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek