Bueno, al final, trataré de explicar el codigo que llevo
Código:
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int bin2dec(char * sbin);
//int contarCeros(char *sbin);
//int caracterAscii(char *sbin);
int main(void)
{
char str[1000];
int i, sum, p;
int arregloCeros[1000];
int arregloFinal[1000];
printf("\nIntroduzca un numero en formato binario: ");
gets(str);
printf(" El resultado decimal es:%d\n", bin2dec(str), arregloCeros[i]);//entrego el valor en decimal y si tiene un cero, lo asigno a arregloCeros
printf(" El resultado caracter es:%c\n",arregloFinal[p], toascii(sum));//el valor en decimal, lo entrego en formato ascii
getch();
}
int bin2dec(char *sbin)
{
int j=0,sum=0,tmp, i=0, p=0;
int len = strlen(sbin);
int contador;
int arregloCeros[100];
int arregloFinal[1000];
for(j=0;j<len;j++)
{
if(sbin[j]!='1' && sbin[j]!='0')//si el valor ingresado es distinto de 1 o 0.
{
printf("Este no es un numero en formato binario.");
return -1;
}
}
tmp = len-1;
for(j=0; j<=7; j++)//recorre el arreglo.
{
sum=sum+((sbin[j]-'0')*(tmp?(2<<tmp-1):1));//operacion que calcula el valor binario a decimal.
tmp--;
}
return sum;//valor que cambia a decimal
if(sbin[j]==sbin[j+j])//pregunto si es valor ingresado es igual a mismo valor, para saber si es cero, si es uno, la suma me va a dar 2 y no sirve
{
contador++;
if(contador == 8)//si el contador llega a 8
{
for(i=0; i<1000; i++)//recorro el arreglo
{
arregloCeros[i]='/0';//le asigno un valor de espacio, no se si es así, pero se me ocurrio
}
}
}
else
{
contador=0;
}
for(p=0;p<1000;p++)
{
arregloFinal[p]=sum;que el valor que dá la suma del calculo de binario a decimal, lo asigno a arregloFinal.
}
} Cuando me debe imprimir por pantalla el caracter, me sale siempre el mismo signo con un valor decimal distinto
Me sale el numero 21, me sale un
, cuando sale un 32, me sale un 
Que alguien entienda mi codigo y me de una solucion por favor 
---------- Post added at 19:19 ---------- Previous post was at 17:56 ----------
UP....