#define _GNU_SOURCE#include <stdlib.h>#include <stdio.h>char *ecvt(double x, int n, int *dp, int *sign){static char buf[16];char tmp[32];int i, j;if (n-1U > 15) n = 15;sprintf(tmp, "%.*e", n-1, x);i = *sign = (tmp[0]=='-');for (j=0; tmp[i]!='e'; j+=(tmp[i++]!='.'))buf[j] = tmp[i];buf[j] = 0;*dp = atoi(tmp+i+1)+1;return buf;}