|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 houqing1999 于 2023-5-10 22:44 编辑
/*这是问题,0. 你应该听说过 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[i++] = '-';
num = -num;
}
temp = num;
while (temp > 9)
{
dec *= 10;
temp /= 10;
}
while (dec != 0)//俺想知道这个while语句啥意思,还有之后的,好吧其实压根整个都没怎么懂
{
str[i++] = num / dec + '0';
num = num % dec;
dec /= 10;
}
str = '\0';
return str;
}
int main(void)
{
char str[10];
printf("%s\n", myitoa(520, str));
printf("%s\n", myitoa(-1234, str));
return 0;
}
本帖最后由 isdkz 于 2023-5-10 22:29 编辑
这段代码实现了将整型数转换成字符串的功能。下面是对代码的详细解释:
1. 函数声明
这里声明了一个函数 myitoa ,它接受两个参数,一个是整型数 num ,另一个是字符数组 str 。函数返回值为指向字符的指针。
2. 函数实现
char *myitoa(int num, char *str)
{
int dec = 1;
int i = 0;
int temp;
if (num < 0)
{
str[i++] = '-';
num = -num;
}
temp = num;
while (temp > 9)
{
dec *= 10;
temp /= 10;
}
while (dec != 0)
{
str[i++] = num / dec + '0';
num = num % dec;
dec /= 10;
}
str = '\0';
return str;
}
函数首先定义了三个变量 dec 、 i 和 temp ,分别用于记录位数、字符数组下标和整型数的临时变量。如果传入的整型数 num 为负数,则在字符数组 str 中添加一个负号,并将 num 变为正数。接下来,通过一个循环,计算出整型数 num 的位数。然后,再通过另一个循环,将整型数 num 转换成字符串,存储在字符数组 str 中。最后,在字符数组 str 的末尾添加一个空字符 '\0' ,表示字符串的结束。最后,返回指向字符数组 str 的指针。
3. 主函数
int main(void)
{
char str[10];
printf("%s\n", myitoa(520, str));
printf("%s\n", myitoa(-1234, str));
return 0;
}
主函数中定义了一个长度为10的字符数组 str ,然后分别调用 myitoa`函数将整型数520和-1234转换成字符串,并打印输出。
|
|