Chinaunix首页 | 论坛 | 博客
  • 博客访问: 46102
  • 博文数量: 60
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-21 16:56
文章分类

全部博文(60)

文章存档

2014年(60)

我的朋友

分类: C/C++

2014-10-10 19:20:50

原文地址:IntToChar 作者:linux_wuliqiang

/*
*    定义函数 char * IntToChar(char* pDestStr, int nSrcNum);
*    表头文件 #include
*    函数描述    将整型数字转换为字符串,(正负数都可以),pDestStr 要有足够的空间来
*                        容纳转换后的字符串。
*     返回值     成功:返回转换后的字符串     失败:返回NULL        
*        作 者 武立强
*        时    间    2009-02-06
*        注    意    时刻注意指针现在指到那里了,malloc() 和free()的个数一定要相同
*                        千万小心内存泄露,和野指针的出现。
*/

char * IntToChar(char* pDestStr, int nSrcNum)
{
    assert( NULL != pDestStr );
    
    int nTemp = 0;    //存储一个位的数字

    int nPlace = 0;    //存储小数点的位置

    int nNegative = 0;    // 1--负数, 0---非负数

    char* pTemp = NULL;
    char* pFirst = NULL;
    int nLen = 0; // 转换后字符串的长度


    pTemp =(char*)malloc( sizeof(char)*100 );
    if(NULL == pTemp)
    {
        return NULL;
    }
    memset(pTemp, '\0', 100);
    pFirst = pTemp;

    // 判断是否是负数

    if(nSrcNum < 0)
    {
        nSrcNum = -nSrcNum;
        nNegative = 1;
    }

    // 当循环结束后,nTemp 指向字符串的最后!

    while( nSrcNum >= 10)
    {
        nTemp = nSrcNum % 10;
        *pTemp = nTemp + 48;    // nTemp + 48 数字转成字符

        nSrcNum = nSrcNum / 10; // 两个正数相除,结果取整

        pTemp++;
    }
     *pTemp = nSrcNum + 48;

    if(nNegative)
    {
        *(++pTemp) = '-';
    }
    

    nLen = strlen(pFirst);
    pFirst = pDestStr;

    //字符串反转

    for(int i=0; i<nLen; i++)
    {
        *pDestStr++ = *pTemp--;
    }
    pTemp++; // 指向字符串开始

    *pDestStr = '\0'; // 字符串结束, 切记!


    // 释放分配在堆上的内存.

    free(pTemp);
    pTemp = NULL;
    pDestStr = NULL;

    return pFirst;
}

阅读(486) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~