superswagy2002 发表于 2021-10-18 08:35:52

C语言的第29课的第一个动手做

#include <stdio.h>

char *myitoa(int num, char *str);

char *myitoa(int num, char *str)
{
      int dec = 1;
      int i = 0;
      int temp;

      if (num < 0)
      {
                str = '-';
                num = -num;
      }

      temp = num;

      while (temp > 9)
      {
                dec *= 10;
                temp /= 10;
      }

      while (dec != 0)
      {
                str = num / dec + '0'; //这个句不知道是什么意思
                num = num % dec;
                dec /= 10;
      }

      str = '\0';

      return str;
}

int main(void)
{
      char str;

      printf("%s\n", myitoa(520, str));
      printf("%s\n", myitoa(-1234, str));

      return 0;
}

大马强 发表于 2021-10-18 09:49:58

可以参照acii码表
一个整数转变成字符只要加上 acii码表“0”
%5Bimg%5Dhttps://static01.imgkr.com/temp/e19506d2acd141f6bb3d08d7285d917c.png

大马强 发表于 2021-10-18 09:51:10

大马强 发表于 2021-10-18 09:49
可以参照acii码表
一个整数转变成字符只要加上 acii码表“0”


就比如整型 5 加 “0”(48) = 53("5")

TyCk 发表于 2021-10-18 10:01:50

num / dec + '0'
这句的作用是把数字快速转换为对应的字符型数字,如整数1变为字符“1”。
从楼上的ASCII码表可以看出,字符0到9对应的ASCII码是依次递增的(ASCII码即字符在内存中的实际存储数字),所以直接对字符“0”加上数字就变成了对应的数字字符。当然,用其他类型转换方法也行,比如强制类型转换或者函数,只不过+'0'写起来更方便快捷。
另外,补充一点,ASCII码是递增的,所以才可以这样用;而其他非依次递增的编码类型就不能这样用了。

fengchenshaozhu 发表于 2021-10-18 20:29:04

str=num/dec +'0'
代表数组str【0】=5.2,str【1】=0 ,str【2】=‘0’
数值求余

1molHF 发表于 2021-10-18 22:20:14

{:10_256:}

tianlai7266 发表于 2021-10-18 22:50:11

{:10_254:}

sunyt 发表于 2021-10-19 11:06:46

{:7_138:}

冷眸°Perpetual 发表于 2021-10-19 11:32:18

蹭蹭

阿萨德按时 发表于 2021-10-19 11:35:34

{:10_277:}

hornwong 发表于 2021-10-19 19:46:00

{:5_95:}

阿萨德按时 发表于 2021-10-20 08:44:59

{:10_316:}

hujiamiao1990 发表于 2021-10-20 19:00:19

蹭蹭

18408238295 发表于 2021-11-2 16:19:18

{:5_95:}
页: [1]
查看完整版本: C语言的第29课的第一个动手做