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;
} 可以参照acii码表
一个整数转变成字符只要加上 acii码表“0”
%5Bimg%5Dhttps://static01.imgkr.com/temp/e19506d2acd141f6bb3d08d7285d917c.png
大马强 发表于 2021-10-18 09:49
可以参照acii码表
一个整数转变成字符只要加上 acii码表“0”
就比如整型 5 加 “0”(48) = 53("5") num / dec + '0'
这句的作用是把数字快速转换为对应的字符型数字,如整数1变为字符“1”。
从楼上的ASCII码表可以看出,字符0到9对应的ASCII码是依次递增的(ASCII码即字符在内存中的实际存储数字),所以直接对字符“0”加上数字就变成了对应的数字字符。当然,用其他类型转换方法也行,比如强制类型转换或者函数,只不过+'0'写起来更方便快捷。
另外,补充一点,ASCII码是递增的,所以才可以这样用;而其他非依次递增的编码类型就不能这样用了。 str=num/dec +'0'
代表数组str【0】=5.2,str【1】=0 ,str【2】=‘0’
数值求余 {:10_256:} {:10_254:} {:7_138:} 蹭蹭 {:10_277:} {:5_95:} {:10_316:} 蹭蹭 {:5_95:}
页:
[1]