Vi lascio tutto il codice perchè non so bene in che punto si trovi il problema
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <string.h>
void Dec2Bin(char string[], int parteint)
{
int n=parteint, i=0, j;
char temp[99];
while(n!=0)
{
temp[i]=(n%2)+'0';
n/=2;
i++;
}
temp[i]='\0';
int lung=strlen(temp);
for(i=0, j=lung-1;i<lung;i++, j--)
string[j]=temp[i];
string[i]='\0';
}
void Dec2Mant(char string[], float partedec)
{
float n=partedec;
int i;
for(i=0;i<23;i++)
{
n*=2;
if(n<1)
string[i]='0';
else
{
string[i]='1';
n-=1;
}
}
string[i]='\0';
}
int main()
{
char numero[32], esp[99], temp[99], ieee754[99], mantissa[23];
int scelta, parteint, j, i, pos;
float partedec;
printf("Scegli il metodo di conversione:\n1) Da decimale a floating point a 32 bit\n2) Da floating point a 32 bit a decimale\n");
scanf("%d", &scelta);
while(scelta!=1 && scelta!=2)
{
printf("Errore, premi un qualcunque tasto per riprovare\n");
getch();
system("cls");
printf("Scegli il metodo di conversione:\n1) Da decimale a floating point a 32 bit\n2) Da floating point a 32 bit a decimale\n");
fflush(stdin);
scanf("%d", &scelta);
}
if(scelta==1)
{
printf("Inserisci il numero decimale con la virgola [,/.]\n");
fflush(stdin);
gets(numero);
parteint=atoi(numero);
if(parteint>0)
strcat(ieee754,"0");
else
{
if(numero[0]=='-')
{
strcat(ieee754,"1");
parteint*=-1;
}
else
strcat(ieee754,"0");
}
for(i=0;numero[i]!='.' && numero[i]!=',';i++)
numero[i]='0';
partedec=atof(numero);
Dec2Bin(esp, parteint);
if(atoi(esp)!=0)
{
pos=strlen(esp)-1;
for(i=0;i<pos;i++)
temp[i]=esp[i+1];
temp[i]='\0';
Dec2Bin(esp,127+pos);
strcat(ieee754,esp);
printf("%s\n", esp);
Dec2Mant(mantissa, partedec);
printf("%s\n", mantissa);
//strcat(ieee754, mantissa);
printf("%s\n", ieee754);
}
}
else
{
}
return 0;
}
l'ultimo else è vuoto perchè ci devo ancora lavorare
Comunque il problema è che se stampo la stringa ieee754 prima di richiamare Dec2Mant me la stampa invece se la stampo dopo averla richiamata mi stampa uno spazio vuoto anche se la funzione Dec2Mant non tocca in alcun modo ieee754 e un altro problema si presenta se provo a fare strcat(ieee754,mantissa) che mi fa crashare il programma