整型数字转化成字符串的函数(课后作业)
请问一下为什么要在转化后的每个字符后面加一个'0'才能正常输出呢?我一开始自己写的代码不加'0'就输出不了,看了小甲鱼的答案也不知道为什么一定要加这个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;
} 加'0'是将原来的数字转成该数字对应的ASCII码。
例如1的ASCII是十进制65,0的ASCII是十进制64,那么1+'0'就是1+64=65,就将数字转为所对应的ASCII码了,这样就是真正的字符串了
就是23行那个地方 因为 num / dec 的结果是数字,加上 '0' 相当于加上它的 ASCII码 , 把它转化成字符的数字,基础不够牢哈。 sunrise085 发表于 2020-3-17 22:17
加'0'是将原来的数字转成该数字对应的ASCII码。
例如1的ASCII是十进制65,0的ASCII是十进制64,那么1+'0'就 ...
还想问一下为什么每个都是加0对应到他本身的ASCII值呢? 大肥侃子 发表于 2020-3-17 22:22
因为 num / dec 的结果是数字,加上 '0' 相当于加上它的 ASCII码 , 把它转化成字符的数字,基础不够牢哈。
谢谢你,还想问一下为什么每个都是加0对应到他本身的ASCII值呢? 叫我miniQ 发表于 2020-3-17 22:27
谢谢你,还想问一下为什么每个都是加0对应到他本身的ASCII值呢?
因为字符0~9的ASCII值都是连续的 大河之jian 发表于 2020-3-17 22:48
因为字符0~9的ASCII值都是连续的
谢谢了,我后来查了一下,刚好加上0的ASCII都是对应上的
页:
[1]