發信人: Wyvern (你猜), 信區: Program
標  題: Re: 問一個function
發信站: 杏花村 (Tue Feb 25 13:18:50 1997) , 站內信件

【 在 wenny (溫妮村姑) 的大作中提到: 】
:         在UNIX 上要把整數轉成字串要用那一個 FUNCTION
:    如字串轉成整數是用 atoi() 那整數轉字串呢??
there is no itoa() in UNIX, but you can write your own..

char itoa (const int i)
{
    static char buf [ MAX_INPUT_LENGTH ];

    sprintf (buf, "%d", i);
    return buf;
}

and since this function return a static memory location, it is your 
responsibility to duplicate by yourself. For example, statements as
follow will cause an error.

    fprintf (fp, "Affect %s %s\n",
        itoa (af.type), itoa (af.level));

But the itoa() can be changed into follow form:

char itoa (const int i)
{
    static char buf_queue [MAX_QUEUE_SIZE][MAX_INPUT_LENGTH];
    static int queue_pointer;
    char *return_str;

    return_str = buf_queue [queue_pointer];
    sprintf (return_str, "%d", i);
    
    queue_pointer++;
    queue_pointer %= MAX_QUEUE_SIZE;
    return return_str;
}

Then statements as fprintf above might be allowed if the time of invoking
itoa() in the argument list is less than MAX_QUEUE_SIZE.