#include "stdio.h" #include "stdlib.h" #include "string.h" char* c_dbl_str(double value, int ndig, int length) { int dec, sign; char *pstr, *buff, *start; int c, d, slen; dec = 2; sign = 0; pstr = fcvt(value, ndig, &dec, &sign); if (dec > length) length = dec; if ( (buff=malloc(sizeof(char)*(length+2))) == NULL ) { printf("Not enough memory for the conversion!\n"); start = pstr; } else { start = buff; c = 0; if (strlen(pstr) == 0) { *buff = '0'; buff++; c++; } else { if (value == 0) c = strlen(pstr); } if (sign) { *buff = '-'; buff++; c++; } d = 0; slen = strlen(pstr); if (dec < slen) slen++; while (*pstr || c < length-slen) { if (c < length-slen) { *buff = '0'; buff++; c++;} else { if (d == dec) { *buff = '.'; } else { *buff = *pstr; pstr++; } buff++; c++; d++; } } *buff = '\0'; } return start; }