#include <stdlib.h>
#include <stdio.h>
#include <string.h>

char *mygcvt(double val)
{
    char buf1[256];
    static char buf2[256];
    int prec = 1;
    size_t len, maxlen = 0;
    for (;;)
    {
        len = strlen(gcvt(val, prec, buf1));
        if (len <= maxlen)
            break;
        maxlen = len;
        strcpy(buf2, buf1);
        prec++;
    }
    return buf2;
}

int main(void)
{
    printf("%s\n", mygcvt(0.0));
    printf("%s\n", mygcvt(1.0));
    printf("%s\n", mygcvt(0.1));
    printf("%s\n", mygcvt(0.123));
    printf("%s\n", mygcvt(0.3333333333333333333333333333333333333333333));
    return 0;
}
