s*****r 发帖数: 773 | 1 一个整数转化为字符串的函数
不太理解里面为什么要用到log
希望大家指点一二
char* itoa(int n) {
char *s =NULL;
char *p;
int nz;
int mf = 0;
if(n>=0) {
nz=log(n)/log(10);
s=(char*)calloc(nz+1,sizeof(char));
p=s;
}else{
if(n==INT_MIN) {
mf=1;
n=-INT_MAX;
}
nz=log(-n)/log(10);
n=-n;
s=(char *)calloc(nz+2,sizeof(char));
p=s;
*p='-';
p++;
}
int pt=pow(10,nz);
while(pt>=1){
if(pt==1&&mf)
*p=(n/pt)+'0'+1;
else
*p=(n/pt)+'0';
p++;
|
r****r 发帖数: 115 | 2 算有多少位数字好分配内存给字符串
【在 s*****r 的大作中提到】 : 一个整数转化为字符串的函数 : 不太理解里面为什么要用到log : 希望大家指点一二 : char* itoa(int n) { : char *s =NULL; : char *p; : int nz; : : int mf = 0; : if(n>=0) {
|
s*****r 发帖数: 773 | 3 谢谢,那这里的mf是什么意思呢
另外还有
if(pt==1&&mf)
*p=(n/pt)+'0'+1;
else
*p=(n/pt)+'0';
为什么前面那个要加1后面这个不要呢?
【在 s*****r 的大作中提到】 : 一个整数转化为字符串的函数 : 不太理解里面为什么要用到log : 希望大家指点一二 : char* itoa(int n) { : char *s =NULL; : char *p; : int nz; : : int mf = 0; : if(n>=0) {
|
k****f 发帖数: 3794 | 4 这个代码乱七八糟的
如果n=0,log(0)是没有定义的
itoa怎么会需要浮点的log运算?
【在 s*****r 的大作中提到】 : 谢谢,那这里的mf是什么意思呢 : 另外还有 : if(pt==1&&mf) : *p=(n/pt)+'0'+1; : else : *p=(n/pt)+'0'; : 为什么前面那个要加1后面这个不要呢?
|
m*****e 发帖数: 4193 | 5 烂
【在 s*****r 的大作中提到】 : 一个整数转化为字符串的函数 : 不太理解里面为什么要用到log : 希望大家指点一二 : char* itoa(int n) { : char *s =NULL; : char *p; : int nz; : : int mf = 0; : if(n>=0) {
|
s*****r 发帖数: 773 | |
k****f 发帖数: 3794 | 7 google: itoa source code
【在 s*****r 的大作中提到】 : 能够推荐一个好的么,谢谢了
|