参数和指针,课后作业
你应该听说过 itoa 函数,它的作用是将一个整数转换成字符串形式存储。现在要求我们自己来实现一个类似功能的函数 myitoa(int num, char *str),该函数的第一个参数是待转换的整型变量,第二参数传入一个字符指针,用于存放转换后的字符串。#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;
}其中这段代码: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';
看了半天,看不懂,就想到是不是转化为十进制,表示出。
查ASICII码表,就明白了,扩展各类型数据是怎么存的{:10_256:} 百世经纶 发表于 2019-7-9 16:15
查ASICII码表,就明白了,扩展各类型数据是怎么存的
看了,还是不太明白,请指教一下。 本帖最后由 百世经纶 于 2019-7-9 17:37 编辑
乔宽 发表于 2019-7-9 16:24
乔宽 发表于 2019-7-9 16:24
看了,还是不太明白,请指教一下。
1 + ‘0’ 就是字符 ‘1’ 还以为要加48呢 (不用ASICII表)
2 + ‘0’ 是 ‘2’
都是取最高位(521/100=5)转为字符(char a = 5+‘0’),再取次高位转字符,
521%100=21 取2转字符,循环就是了
{:10_277:}
页:
[1]