找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2277|回复: 2
打印 上一主题 下一主题
收起左侧

关于C语言长整型数转换为字符串unsigned char LongToString

[复制链接]
跳转到指定楼层
楼主
ID:483865 发表于 2021-2-3 22:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
看到这段程序懵逼,哪位可以帮我逐句注解一下么?十分感谢。
/*长整型数转换为字符串,str为字符串指针,dat为待转换数,返回值为字符串长度*/
  1. unsigned char LongToString(unsigned char *str, signed long dat)
  2. {
  3.         signed char i = 0;
  4.         unsigned char len = 0;
  5.         unsigned char buf[12];
  6.         if(dat < 0)
  7.         {
  8.                 dat = -dat;
  9.                 *str++ = '-';
  10.                 len++;
  11.         }
  12.         do{
  13.                 buf[i++] = dat % 10;
  14.                 dat /= 10;
  15.         }while(dat>0);
  16.         len += i;
  17.         while(i-- > 0)
  18.         {
  19.                 *str++ = buf[i] + '0';
  20.         }
  21.         *str = '\0';
  22.         return len;
  23. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:693038 发表于 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语言功底加深一下就能明了了

评分

参与人数 1黑币 +40 收起 理由
admin + 40 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:483865 发表于 2021-2-4 11:42 | 只看该作者
lincheng15 发表于 2021-2-4 10:52
if(dat < 0)这个里面是处理负数的,如果是负数,字符串前面加个负号,字符串长度len加1,
do...while里面 ...

感谢你的回复,按照你的解释我再理解一下。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表