Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: maxirua en 2 Julio 2015, 08:19 am



Título: Alguien podría explicarme este codigo por favor?
Publicado por: maxirua en 2 Julio 2015, 08:19 am
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
  1. void bin_to_string(unsigned int value, char *str)
  2. {
  3.  char aux;
  4.  unsigned int unit;
  5.  aux = 0;
  6.  str[0] = str[1] = str[2] = str[3] = str[4] = '0';
  7.  str[5] = 0;
  8.  unit = 10000;
  9.  while (value)
  10.  {
  11.    if (value>=unit)
  12.    {
  13.      value -= unit;
  14.      str[aux]++;
  15.    } else
  16.    {
  17.      aux++;
  18.      unit /= 10;
  19.    }    
  20.  }
  21.  while (str[0]=='0')
  22.  {
  23.    for (aux=0; aux<=4; aux++) str[aux]=str[aux+1];
  24.  }
  25. }

Mod: Los códigos deben ir en etiquetas GeSHi


Título: Re: Alguien podría explicarme este codigo por favor?
Publicado por: Seyro97 en 2 Julio 2015, 21:28 pm
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
  1. 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