标题:
关于C语言长整型数转换为字符串unsigned char LongToString
[打印本页]
作者:
茶水
时间:
2021-2-3 22:55
标题:
关于C语言长整型数转换为字符串unsigned char LongToString
看到这段程序懵逼,哪位可以帮我逐句注解一下么?十分感谢。
/*长整型数转换为字符串,str为字符串指针,dat为待转换数,返回值为字符串长度*/
unsigned char LongToString(unsigned char *str, signed long dat)
{
signed char i = 0;
unsigned char len = 0;
unsigned char buf[12];
if(dat < 0)
{
dat = -dat;
*str++ = '-';
len++;
}
do{
buf[i++] = dat % 10;
dat /= 10;
}while(dat>0);
len += i;
while(i-- > 0)
{
*str++ = buf[i] + '0';
}
*str = '\0';
return len;
}
复制代码
作者:
lincheng15
时间:
2021-2-4 10:52
if(dat < 0)这个里面是处理负数的,如果是负数,字符串前面加个负号,字符串长度len加1,
do...while里面就是把每一位数单独拆出来放到buf数组里面去,比如一千一百二十三,1123拆之后放到数组就变成了[3],[2],[1],[1]注意这里顺序反了,最后的while(i--)就是数组里面的数变成字符串顺便把顺序掉过来,3要变成字符'3'需要3+'0',其他同理,由于字符串是以'\0'为结束符,所以最后加了个'\0',这是纯C而已,把C语言功底加深一下就能明了了
作者:
茶水
时间:
2021-2-4 11:42
lincheng15 发表于 2021-2-4 10:52
if(dat < 0)这个里面是处理负数的,如果是负数,字符串前面加个负号,字符串长度len加1,
do...while里面 ...
感谢你的回复,按照你的解释我再理解一下。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1