我想在C语言中编写自己的函数,原因是将int转换为小数字串,就像sprintf一样。
示例:
int number = 254;
char string[10];
sprintf(string, "%d", number);
在我想写的函数之后,字符串应如下所示:
[0] 2
[1] 5
[2] 4
[3] '\0'
为了进一步澄清,我想将int的实际转换编程为字符串。我不想用sprintf或itoa等来做。我想知道它是如何完成的,并且能够自己编程并对其进行小的调整。
补充说明: 我不想使用itoa或sprintf,但我自己编写了这些程序。
答案 0 :(得分:2)
#include <stdio.h>
#include <stdlib.h>
int i2a(char *s, int n){
div_t qr;
int pos;
if(n == 0) return 0;
qr = div(n, 10);
pos = i2a(s, qr.quot);
s[pos] = qr.rem + '0';
return pos + 1;
}
char* my_itoa(char *output_buff, int num){
char *p = output_buff;
if(num < 0){
*p++ = '-';
num *= -1;
} else if(num == 0)
*p++ = '0';
p[i2a(p, num)]='\0';
return output_buff;
}
int main(void){
int number = -254;
char string[12];
printf("%s", my_itoa(string, number));
return 0;
}
答案 1 :(得分:0)
int number = 254;
int back=0,i=0;
char ch='\0';
char string[10];
for(i=0;(number/10)==0;i++){
back=number%10;
ch=(back*pow(10,i)+48);
string[i]=ch;
}