整数转换为字符串

因为64位下INT_MAX其长度不超过20,故此处将字符串数组传递进函数。

int num2str(int num,char str[])
{
    char c;
    int i=0, j=0, k=0, tmp = num > 0 ? num : -1 * num;

    if (num > INT_MAX || num < INT_MIN) return -1;

    if (num<0)
    {
        str[i++] = '-'; ++j;
        num *= -1; //求余需要注意转换为正数,因为-1111%10==-1
    }
    else if (0==num)
    {
        str[0] = '0'; str[1] = '\0'; return 0;
    }

    while (tmp)
    {
        str[i] = tmp % 10 + '0';
        ++i; tmp /= 10;
    }

    k = i - 1;
    while (j<k) //字符串转换
    {
        c = str[j];
        str[j] = str[k];
        str[k] = c;
        j++; k--;
    }
    str[i] = '\0';

    return 0;
}

此处考虑了整数为正或为负的情况,但是存在一个问题,main里传递进的数字如果溢出,则函数中的数字截然不同。

 

在程序员面试宝典靠中问题:为什么

char* strcpy(char* strDest, const char* strSrc)

要返回char*,不是已经复制了吗?

答:构造链式表达式,诸如

int len = strlen(strcpy(strDest, "hello world"));
posted @ 2015-07-24 23:18  从此寂静无声  阅读(790)  评论(0编辑  收藏  举报