谢谢指点
函数就用itoa(iNumber),也可以sprintf(str, "%d", iNumber);
char * itoa ( int value, char * buffer, int radix );
Convert integer to string.
Converts an integer value to a null-terminated string using the specified radix and stores the result in the given buffer.
If radix is 10 and value is negative the string is preceded by the minus sign (-). With any other radix, value is always considered unsigned.
buffer should be large enough to contain any possible value: (sizeof(int)*8+1) for radix=2, i.e. 17 bytes in 16-bits platforms and 33 in 32-bits platforms.
Parameters.
value
Value to be represented as a string.
buffer
Buffer where to store the resulting string.
radix
Numeral radix in which value has to be represented, between 2 and 36.
Return Value.
A pointer to the string.
Portability.
Not defined in ANSI-C. Supported by some compilers.
Example.
/* itoa example */
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int i;
char buffer [33];
printf ("Enter a number: ");
scanf ("%d",&i);
itoa (i,buffer,10);
printf ("decimal: %s\n",buffer);
itoa (i,buffer,16);
printf ("hexadecimal: %s\n",buffer);
itoa (i,buffer,2);
printf ("binary: %s\n",buffer);
return 0;
}
Output:
Enter a number: 1750
decimal: 1750
hexadecimal: 6d6
binary: 11011010110
函数原型:char *_itoa( int value, char *string, int radix );
需要的头文件:stdlib.h
MSDN上的用法:/* ITOA.C: This program converts integers of various
* sizes to strings in various radixes.
*/
#include <stdlib.h>
#include <stdio.h>
void main( void )
{
char buffer[20];
int i = 3445;
long l = -344115L;
unsigned long ul = 1234567890UL;
_itoa( i, buffer, 10 );
printf( "String of integer %d (radix 10): %s\n", i, buffer );
_itoa( i, buffer, 16 );
printf( "String of integer %d (radix 16): 0x%s\n", i, buffer );
_itoa( i, buffer, 2 );
printf( "String of integer %d (radix 2): %s\n", i, buffer );
_ltoa( l, buffer, 16 );
printf( "String of long int %ld (radix 16): 0x%s\n", l,
buffer );
_ultoa( ul, buffer, 16 );
printf( "String of unsigned long %lu (radix 16): 0x%s\n", ul,
buffer );
}
Output
String of integer 3445 (radix 10): 3445
String of integer 3445 (radix 16): 0xd75
String of integer 3445 (radix 2): 110101110101
String of long int -344115 (radix 16): 0xfffabfcd
String of unsigned long 1234567890 (radix 16): 0x499602d2
atoi将字符串转换成整型数;
atol将字符串转换成长整型数;
strtol将字符串转换成长整型数
strtoul将字符串转换成无符号长整型数
回复人:llf_hust() ( ) 信誉:100
2005-08-10 12:12:00
#include "stdio.h"
void convert(n)
int n;
{int i;
if ((i=n/10)!=0)
convert(i);
putchar(n%10+0);
}//这段代码看不懂,请帮忙解释一下
main()
{ int number;
printf("\n输入整数:");
scanf("%d",&number);
printf("\n输出是: ");
if(number<0)
{ putchar(-);
number=-number;
}
convert(number);
}
//用这个方法也可以
#include "stdio.h"
void convert(n)
int n;
{int i;
if ((i=n/10)!=0)
convert(i);
putchar(n%10+0); //通过ASCII值来转换,把输入的整型值分离成为单个的数字,如
//整型数34,需要分离为3、4这两个数。方法为:0ASCII为48
//int a=34;int b;int c;
//b=a/10;c=a%10;
//这样b为3,c为4,然后b+48,c+48就是其对应的ASCII码值,也就是字符值。
}//这段代码看不懂,请帮忙解释一下
main()
{ int number;
printf("\n输入整数:");
scanf("%d",&number);
printf("\n输出是: ");
if(number<0)
{ putchar(-);
number=-number;
}
convert(number);
}
void convert(n)
int n;
{int i;
if ((i=n/10)!=0)
convert(i);
putchar(n%10+0); //这段用的是递归法的函数->整数的每一位都要转换成ASCII码,假设实参是3位整数3561,如果要把356转换成ASCII码必须先把35转换成ASCII码,转换35之前必须先把3转换成ASCII码;函数的调用情况是:conver(356)->conver(35)->conver(3)->conver(35)->conver(356);
void convert(3)
int n;
{int i;
if ((i=3/10)!=0)//实参为3时条件为假
convert(i);
putchar(n%10+0)//结果为‘3’
void convert(35)
int n;
{int i;
if ((i=35/10)!=0)//实参为35时i=3条件为真
convert(3); //结果为:‘3”
putchar(n%10+0)//结果为‘5’
//convert(35)函数的结果为‘3’
void convert(356)
int n;
{int i;
if ((i=356/10)!=0)//实参为356时i=35条件为真
convert(35); //结果为:‘35’
putchar(n%10+0)//结果为‘6’
//convert(356)函数的结果为‘356’
如果是支持c++的编译器,可以这样用
char chartemp[50];
int i;
strcpy(chartemp,IntToStr(i).c_str());
这样i,就转成字符串chartemp了
itoa不是标准的
可以使用sprintf
char * itoa(int n)
{
char *r;
int l, t;
t = n;
if (t<0)
{
t = -t;
}
for (l=2; t>0; l++)
{
t /= 10;
}
r = malloc(l);
if (r)
{
sprintf(r,"%d",n);
}
return r;
}