diff --git a/source/libublsettings-char.c b/source/libublsettings-char.c index cc9d3b3..1cde6c5 100644 --- a/source/libublsettings-char.c +++ b/source/libublsettings-char.c @@ -258,37 +258,30 @@ char *yon_char_from_int(int int_to_convert) char *yon_char_from_float(float int_to_convert) { - int i = 1; - float convert_check = (float)int_to_convert; - for (i = 1; convert_check >= 10; i++) - { - convert_check = convert_check / 10; - } - char *ch = malloc((i + 9)* sizeof(char)+ int_to_convert<0?1:0); - memset(ch,0,(i + 9)* sizeof(char)); + int i = snprintf( NULL, 0, "%f", int_to_convert)+1; + + char *ch = malloc(i * sizeof(char)); + memset(ch,0,i * sizeof(char)); sprintf(ch, "%.2f", int_to_convert); return ch; } char *yon_char_from_double(double int_to_convert) { - int i = 1; - double convert_check = (double)int_to_convert; - for (i = 1; convert_check >= 10; i++) - { - convert_check = convert_check / 10; - } - char *ch = malloc((i + 9)* sizeof(char)+ int_to_convert<0?1:0); - memset(ch,0,(i + 9)* sizeof(char)); + int i = snprintf( NULL, 0, "%f", int_to_convert)+1; + + char *ch = malloc(i * sizeof(char)); + memset(ch,0,i * sizeof(char)); sprintf(ch, "%.2f", int_to_convert); return ch; } char *yon_char_from_long(long int_to_convert) { - size_t size = 20 * sizeof(char) + 1 + int_to_convert<0?1:0; - char *ch = malloc(size); - memset(ch,0,size); + int i = snprintf( NULL, 0, "%ld", int_to_convert)+1; + + char *ch = malloc(i * sizeof(char)); + memset(ch,0,i * sizeof(char)); sprintf(ch, "%ld", int_to_convert); return ch; }