|
10鱼币
本帖最后由 qiu064987 于 2021-5-25 19:53 编辑
0. 你应该听说过 itoa 函数(函数文档 -> 传送门),它的作用是将一个整数转换成字符串形式存储。现在要求我们自己来实现一个类似功能的函数 myitoa(int num, char *str),该函数的第一个参数是待转换的整型变量,第二参数传入一个字符指针,用于存放转换后的字符串。
- #include<stdio.h>
- char *myitoa(int num, char *str)
- {
- int i= 0, s, dev, j, l;
- int a[10];
- if (num < 0)
- {
- str[i++] = '-';
- num = -num;
- }
- s= num;
-
-
- while (num != 0 && num / 10)
- {
- num = num / 10;
- i++;
- }
- j = i;
- while(i >= 0)
- {
- dev = s % 10;
- s = s / 10;
- a[i] = dev;
- i--;
- }
-
- for (i = 0; i <= j; i++)
- {
- *(str + i) = *(a + i) + '0';
- }
-
- return str;
- }
- int main(void)
- {
- char str[10];
- printf("%s\n", myitoa(520, str));
- printf("%s\n", myitoa(-1234, str));
- return 0;
- }
复制代码
自己想的,哪位大佬帮我改改错,谢谢。
不要重新自己写的,这样还不如看小甲鱼老师的。
结果很奇怪,结果是520w和01234.
- #include<stdio.h>
- char *myitoa(int num, char *str)
- {
- int i = 0, s, dev, j, l;
- int flag = i;
- int a[10];
- if (num < 0)
- {
- str[i++] = '-';
- flag = i;
- num = -num;
- }
- s = num;
- while (num != 0 && num / 10)
- {
- num = num / 10;
- i++;
- }
- j = i;
- while (i >= 0)
- {
- dev = s % 10;
- s = s / 10;
- a[i] = dev;
- i--;
- }
- for (i = 0; i <= j; i++)
- {
- if (flag) //正负需要插入的位置不同
- {
- *(str + i + 1) = *(a + i + 1) + '0';
- }
- else
- {
- *(str + i) = *(a + i) + '0';
- }
- }
- *(str + i) = '\0'; //添加字符串结尾标志\0
- return str;
- }
- int main(void)
- {
- char str[10];
- printf("%s\n", myitoa(520, str));
- printf("%s\n", myitoa(-1234, str));
- return 0;
- }
复制代码
|
|