Alguien podría explicarme este codigo por favor?

Iniciado por maxirua, 2 Julio 2015, 08:19 AM

0 Miembros y 1 Visitante están viendo este tema.

maxirua

Es un código para convertir un valor en binario hacia cadena de caracteres. Lo que no se es como va haciendo el proceso para guardar los valores en la cadena de caracter

Código (cpp) [Seleccionar]
void bin_to_string(unsigned int value, char *str)
{
 char aux;
 unsigned int unit;
 aux = 0;
 str[0] = str[1] = str[2] = str[3] = str[4] = '0';
 str[5] = 0;
 unit = 10000;
 while (value)
 {
   if (value>=unit)
   {
     value -= unit;
     str[aux]++;
   } else
   {
     aux++;
     unit /= 10;
   }    
 }
 while (str[0]=='0')
 {
   for (aux=0; aux<=4; aux++) str[aux]=str[aux+1];
 }
}


Mod: Los códigos deben ir en etiquetas GeSHi

Seyro97

#1
No sé de donde habrás sacado este código, pero no me parece un buen ejemplo. Me explico: En primer lugar, lo que tú pasas a la función es un entero y un puntero hacia un tipo char. Pues bien, tu no sabes si ese puntero está inicializado o no, o siquiera sabes si tiene espacios suficientes. Por ejemplo, podrías haber declarado una variable así:
Código (cpp) [Seleccionar]
char cadena[2] = "";
y tu se la pasarías a la función como bin_to_string(value, cadena); En este caso, es posible que el programa crashee por salirse de la memoria del programa. En segundo lugar, a mi parecer es mejor tenerlo mas ordenado. Cuando declaras la variable uint la dejas sin inicializar, y la inicializas después con una constante. Mejor que la inicialices cuando la declaras siempre  que sea posible.


Por cierto, usa las etiquetas GeSHI :P

Mod: no hacer doble post
Carlos Peláez González. visita http://www.taringa.net/EnjoyC para muchos tutoriales!