Ciao a tutti!
Ho questo codice che mi converte un carattere in binario e che funziona perfettamente:
#include <stdio.h>
int main()
{
char letter;
int bin[8], i;
printf("Immettere una lettera: ");
scanf("%c", &letter);
printf("\nLettera inserita: %c\n", letter);
getchar();
for(i = 0; i < 8; i++)
bin[i] = ((letter >> i)&1);
for(i = 0; i < 8; i++)
printf("%d", bin[7-i]);
printf("\n");
return 0;
}
E quest'altro codice che consente all'utente di scegliere anche se effettuare una conversione da intero a binario:
Premetto che la parte della conversione da carattere a binario è esattamente la stessa al codice qui sopra, copiata ed incollata
#include <stdio.h>
#include <stdlib.h>
void menu();
void choose();
void int_bin();
void char_bin();
int main()
{
menu();
return 0;
}
void menu()
{
printf("\n*** Convertitore ***\n\n");
printf("(1) - Da intero binario\n(2) - Da char a binario\n\n");
choose();
}
void choose()
{
int scelta;
scanf("%d", &scelta);
switch(scelta)
{
case 1:
int_bin();
break;
case 2:
char_bin();
break;
}
}
void int_bin()
{
int i, bin[32];
int n;
int space = 0;
printf("Immettere un numero: ");
scanf("%d", &n);
getchar();
for(i=0;i<32;i++)
{
bin[i]=((n>>i)&1);
}
for(i=0;i<32;i++)
{
space++;
printf("%d",bin[31-i]);
if((space == 8)|(space == 16)|(space == 24))
printf(" ");
}
printf("\n");
}
void char_bin()
{
char letter;
int bin[8], i;
int n;
printf("Immettere una lettera: ");
scanf("%c", &letter);
printf("\nLettera inserita: %c\n", letter);
getchar();
for(i = 0; i < 8; i++)
bin[i] = ((letter >> i)&1);
for(i = 0; i < 8; i++)
printf("%d", bin[7-i]);
printf("\n");
}
Il problema è che nel secondo codice, nella funzione char_bin non mi fa inserire il carattere! Infatti come vedete, subito dopo lo vado a stampare ma in esecuzione non succede nulla. Com'è possibile? Ho semplicemente copiato i due codici!!