您的位置:首页 > 其它

int 转 string 输出 (不用库函数)

2012-08-08 22:47 225 查看
#include "stdafx.h"

#include <iostream>

#include <stdio.h>

using namespace std;

void testFormat(int number);

int intToStr(int number, char** szBuffer);

int reverseStr(char** szBuffer);

int _tmain(int argc, _TCHAR* argv[])

{

testFormat(123);

testFormat(123456789);

testFormat(-369542);

system("pause");

return 0;

}

void testFormat(int number)

{

char buf[50];

char * b = buf;

if(intToStr(number,&b) == 0){

printf("\nint to string success! %d --> \"%s\"\n",number,b);

}

else

{

printf("\nint to string fail! %d --> \"%s\"\n",number,b);

}

}

/*

funcation: format int to string

input : number

output: ** szBuffer

return 0 success, -1 fail

*/

int intToStr(int number, char ** szBuffer)

{

int iRet = -1;

if (NULL == *szBuffer)

goto RETURN;

char * buf = *szBuffer;

int num1 = 0, num2 = number;

//如果是负数,先转换为正数

num2 = number > 0 ? number : (number * -1);

//将数字转换为 char

do

{

num1 = num2 % 10;

*buf = num1 + '0';

buf++;

num2 = num2 / 10;

} while (num2 != 0);

if(0 > number)//负数

{

*buf = '-';

buf++;

}

*buf = '\0';

iRet = reverseStr(szBuffer);

RETURN:

return iRet;

}

/*

funcation : reverse string

intput : ** szBuffer

return 0 succes, -1 fail

*/

int reverseStr(char** szBuffer)

{

int iRet = -1;

if(NULL == *szBuffer)

goto RETURN;

//将转换的字符串逆序

char * p1 = *szBuffer;

char * p2 = p1;

while (*p2++ != '\0');//将p2 指向字符串尾部

p2--;

p2--;

while (p2 > p1)

{

*p1 = *p1 + *p2;

*p2 = *p1 - *p2;

*p1 = *p1 - *p2;

p1++;

p2--;

}

iRet = 0;

RETURN:

return iRet;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: