最后的魁拔 发表于 2020-2-13 10:58:57

为啥这样没输出呢

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;

}

召唤风云 发表于 2020-2-13 11:56:49

哈哈又是我。还记得上一篇吗?先区分两个概念,sizeof,strlen看一看小甲鱼是怎么说的?strlen 函数文档


函数概要:

strlen 函数用于返回指定字符串的长度。

C 语言字符串的长度取决于结束符('\0')的位置。

一个字符串的长度指的是从起始位置到结束符的字符个数(不包含结束符本身)。

初学者很容易混淆字符串的长度和字符串数组的大小,例如:
char mystr = "I love FishC.com!";

上边代码定义一个可以存放 100 个字符的数组,但 mystr 字符串只被初始化为包含 17 个字符的长度。因此,sizeof(mystr) 的结果是 100,而 strlen(mystr) 的结果则是 17。
所以你应该懂了吧,要多用小甲鱼的函数快查,真的很好用。

最后的魁拔 发表于 2020-2-13 11:59:31

本帖最后由 最后的魁拔 于 2020-2-13 12:01 编辑

召唤风云 发表于 2020-2-13 11:56
哈哈又是我。还记得上一篇吗?先区分两个概念,sizeof,strlen看一看小甲鱼是怎么说的?strlen 函数文档


...

召唤风云 发表于 2020-2-13 12:04:40

上次找函数的时候刚好看到了而已,运气运气。那么问题来了,我竟然看不懂你这个函数什么意思,把10进制数转化为10进制数,真的有用吗?原函数好像是可以转化为其他进制的吧。

最后的魁拔 发表于 2020-2-13 12:06:29

召唤风云 发表于 2020-2-13 12:04
上次找函数的时候刚好看到了而已,运气运气。那么问题来了,我竟然看不懂你这个函数什么意思,把10进制数转 ...

兄弟你这个啥时候开始学c语言了

最后的魁拔 发表于 2020-2-13 12:07:15

召唤风云 发表于 2020-2-13 12:04
上次找函数的时候刚好看到了而已,运气运气。那么问题来了,我竟然看不懂你这个函数什么意思,把10进制数转 ...

我这个函数是把整数转成字符串

召唤风云 发表于 2020-2-13 13:18:34

最后的魁拔 发表于 2020-2-13 12:06
兄弟你这个啥时候开始学c语言了

四五个月前吧,我的第1本书是数据结构与算法分析,什么语法都不会,但我竟然大概看懂了前面几章。各种符号不认识就瞎猜。后来学了之后发现猜的都挺对的。看代码,我就是看他是用来干什么的,再结合作者的分析,再想我会怎么做。勉勉强强能理解。
页: [1]
查看完整版本: 为啥这样没输出呢