Buenas, tengo un problema es un tanto raro, tengo un programa que agrupa bits en grupos de 4, es decir, si le entras 11 el te lo convierte en 0011, pero bueno, eso ya lo tengo hecho, esa parte. El problema reside en un while, primero les pongo el codigo entero:
void grupos(char binario[])
{
int i,o,ceros;
char aux[40],p[3];
i=strlen(binario);
ceros=(i%4);
ceros=4-ceros;
for(i=0;i < ceros; i++)
aux[i]=0+48;
for(o=0; o <= strlen(binario)-1 ; o++)
aux[i++]=binario[o];
aux[i]=0;
i=0;
while(i <= strlen(aux)) /*Mientras la i no valga la longitud de aux*/
{
o=0; //inicializamos o a 0
while( o < 4) //mientras o sea menor que 4
p[o++]=aux[i++]; //traspasamos los 4 primeros caracteres de aux a p
p[o]=0; //ponemos fin de cadena
printf("p->%s\n",p); //mostramos p
}
}
El problema reside aqui:
while(i <= strlen(aux)) /*Mientras la i no valga la longitud de aux*/
{
o=0; //inicializamos o a 0
while( o < 4) //mientras o sea menor que 4
p[o++]=aux[i++]; //traspasamos los 4 primeros caracteres de aux a p
p[o]=0; //ponemos fin de cadena
printf("p->%s\n",p); //mostramos p
}
El primer while solo se ejecuta una vez, y no entiendo el porque, ya que es:
si i vale 8, deberia ejecutarse 2 veces, pero no, solo se ejecuta una vez, y no lo comprendo, si alguien pudiera ser tan amable de a ver si encuentra el fallo...
Gracias de antemano