为啥这样没输出呢
0. 你应该听说过 itoa 函数(函数文档 -> 传送门),它的作用是将一个整数转换成字符串形式存储。现在要求我们自己来实现一个类似功能的函数 myitoa(int num, char *str),该函数的第一个参数是待转换的整型变量,第二参数传入一个字符指针,用于存放转换后的字符串。下面是我的^__^,先不考虑负的#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
//1234
char * myitoa(int num,char *str)
{
int i = 0;
while(pow(10,i)<num)
{
i++;
}
int a = i;
for(int j = 0;j<i;j++)
{
int t = num / pow(10,a-1);
num = num % (int)pow((int)10,a-1);
*(str+j) = t+48;
a--;
}
return str;
}
int main(void)
{
char str;
printf("%s\n",myitoa(123456,str));
printf("%d\n",sizeof(str));//无论数字如何变,这个等于10,不变,不知道为啥
system("pause");
return 0;
}
哈哈又是我。还记得上一篇吗?先区分两个概念,sizeof,strlen看一看小甲鱼是怎么说的?strlen 函数文档
函数概要:
strlen 函数用于返回指定字符串的长度。
C 语言字符串的长度取决于结束符('\0')的位置。
一个字符串的长度指的是从起始位置到结束符的字符个数(不包含结束符本身)。
初学者很容易混淆字符串的长度和字符串数组的大小,例如:
char mystr = "I love FishC.com!";
上边代码定义一个可以存放 100 个字符的数组,但 mystr 字符串只被初始化为包含 17 个字符的长度。因此,sizeof(mystr) 的结果是 100,而 strlen(mystr) 的结果则是 17。
所以你应该懂了吧,要多用小甲鱼的函数快查,真的很好用。 本帖最后由 最后的魁拔 于 2020-2-13 12:01 编辑
召唤风云 发表于 2020-2-13 11:56
哈哈又是我。还记得上一篇吗?先区分两个概念,sizeof,strlen看一看小甲鱼是怎么说的?strlen 函数文档
...
强 上次找函数的时候刚好看到了而已,运气运气。那么问题来了,我竟然看不懂你这个函数什么意思,把10进制数转化为10进制数,真的有用吗?原函数好像是可以转化为其他进制的吧。 召唤风云 发表于 2020-2-13 12:04
上次找函数的时候刚好看到了而已,运气运气。那么问题来了,我竟然看不懂你这个函数什么意思,把10进制数转 ...
兄弟你这个啥时候开始学c语言了 召唤风云 发表于 2020-2-13 12:04
上次找函数的时候刚好看到了而已,运气运气。那么问题来了,我竟然看不懂你这个函数什么意思,把10进制数转 ...
我这个函数是把整数转成字符串 最后的魁拔 发表于 2020-2-13 12:06
兄弟你这个啥时候开始学c语言了
四五个月前吧,我的第1本书是数据结构与算法分析,什么语法都不会,但我竟然大概看懂了前面几章。各种符号不认识就瞎猜。后来学了之后发现猜的都挺对的。看代码,我就是看他是用来干什么的,再结合作者的分析,再想我会怎么做。勉勉强强能理解。
页:
[1]