Here's what happens when I run it:Code:#include <stdio.h> #include <stdlib.h> #include <string.h> int bin2dec(const char *); char* dec2bin(const char *); int main(void) { char dec[33]; char bin[33]; printf("Type a binary number: "); fgets(bin, sizeof(bin), stdin); printf("%s is %d in decimal\n", bin, bin2dec(bin)); printf("\nType a decimal number: "); fgets(dec, sizeof(dec), stdin); printf("\n%s is %s in binary\n", dec, dec2bin(dec)); return 0; } int bin2dec(const char *binario) { int i = 0; char *ptr; int dec = 0; if((ptr = strchr(binario, '\n')) != NULL) *ptr = '\0'; while(binario[i] == '0' || binario[i] == '1' && i <= 32) { if(binario[i] == '0') dec <<= 1; else { dec ^= 1; dec <<= 1; } ++i; } dec >>= 1; return dec; } char* dec2bin(const char *decimal) { int i; int dec; int length; char *ptr; char bin[33]; if((ptr = strchr(decimal, '\n')) != NULL) *ptr = '\0'; dec = atoi(decimal); i = 0; while(dec) { if((dec & 1) == 1) bin[i] = '1'; else bin[i] = '0'; dec >>= 1; ++i; } bin[i] = '\0'; length = strlen(bin) - 1; /* reverse array in place */ for(i = 0; i < length; i++, length--) { /* I use dec as a temporary varible so that I don't have to declare another one */ dec = bin[i]; bin[i] = bin[length]; bin[length] = dec; } return bin; }
Can someone help me find what is wrong? Thank you.Code:Type a binary number: 1010 1010 is 10 in decimal Type a decimal number: 10 10 is hÉ@ in binary



LinkBack URL
About LinkBacks


