读书人

Linux C 内核代码中 整型转化为字符串

发布时间: 2012-04-22 18:34:46 作者: rapoo

Linux C 内核代码中 整型转化为字符串 的 问题、。

C/C++ code
#include <config.h>#include "inttostr.h"/* Convert I to a printable string in BUF, which must be at least   INT_BUFSIZE_BOUND (INTTYPE) bytes long.     Return the address of theprintable string, which need not start at BUF.      buf的长度必须大于等于INT_BUFSIZE_BOUND (INTTYPE) bytes long*/char *inttostr (inttype i, char *buf){  char *p = buf + INT_STRLEN_BOUND (inttype);//p指向内存的尾端;  *p = 0;//末端置0;  if (i < 0)    {      do    *--p = '0' - i % 10;      while ((i /= 10) != 0);      *--p = '-';    }  else    {      do    *--p = '0' + i % 10;      while ((i /= 10) != 0);    }  return p;}

中间 这句 *--p = '0' - i % 10; 是什么意思:

还有下面 这句 *--p = '0' + i % 10; ??

[解决办法]
先看i为正数的情况:
*--p = '0' + i % 10;
i%10得到最后的一位,加上'0'是将整数x转换为字符'x'

为负数的时候也是一样,只是余数为负数,故中间为减号
[解决办法]
i<0
负数
--得正 , '0'+字符串最后一个数
循环
完了在加个-号

这样吧?

读书人网 >UNIXLINUX

热点推荐