Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5545021
  • 博文数量: 763
  • 博客积分: 12108
  • 博客等级: 上将
  • 技术积分: 15717
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-28 21:21
个人简介

业精于勤,荒于嬉

文章分类

全部博文(763)

文章存档

2018年(6)

2017年(15)

2016年(2)

2015年(31)

2014年(14)

2013年(87)

2012年(75)

2011年(94)

2010年(190)

2009年(38)

2008年(183)

2007年(28)

分类: C/C++

2009-02-09 22:27:57

/*
*    定义函数 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;
}

阅读(2754) | 评论(0) | 转发(1) |
0

上一篇:StringFind

下一篇: 50 条人生忠告

给主人留下些什么吧!~~