Ciao a tutti,
dovrei acquisire da tastiera una serie di numeri (interi e double) e trascriverli su file. Fino a qui tutto bene, però nel file i numeri dovrebbero essere trascritti esattamente come sono, cioè, per esempio se l'utente insersce 2 nel file devo trascrivere 2 e non 2.000000, allo stesso modo se viene inserito 2.55 devo trascrivere 2.55 e non 2.550000.
Ho già risolto il problema quando il numero è intero:
codice:
double numero;
FILE *finput; //puntatore al file
for(i = 0; i < n; i++)
{
printf("Inserire un numero: ");
scanf("%lf", &numero);
if(numero == (double)(int)numero) //controllo se il numero inserito è un intero
fprintf(finput, "%d ", (int)numero); //se il numero è intero viene scritto su file con %d
else
fprintf(finput, "%lf ", numero); //altrimenti viene scritto usando %lf
}
Con il controllo dell'if sono riuscito a rosolvere il problema quando viene inserito un numero intero, ma come posso fare per ottenere un risultato simile anche dentro l'else, cioè quando viene inserito un double?
Non posso usare una cosa del tipo:
fprintf(finput, "%.2lf ", numero);
perchè così facendo otterrei un risultato ottimale solo per i numeri che hanno due cifre decimali, mentre riamrrebbe uno zero se il numero ha una sola cifra decimale oppure verrebbe troncato se ha più di due cifre decimali.
Grazie