【问题标题】:How to cast an int to a char * in C? [duplicate]如何在C中将int转换为char *? [复制]
【发布时间】:2013-01-10 17:12:57
【问题描述】:

可能重复:
How to convert integer to string in C?

我在 C 中有一个函数,它接受一个 int 值 i。我需要把这个 i 值变成一个字符串(char *)。

这是我目前所拥有的:

char *str = (char *)i;
myfunction(str);

我收到错误:从不同大小的整数转换为指针。

谢谢!

【问题讨论】:

  • 试试(char*)(intptr_t)i。不过,它可能不会做你想做的事。
  • 是否需要获取整数的字符串表示形式?还是整数实际上编码了字符串的地址?
  • 好吧,我需要逐个字符地打印整数。如果我向 myfunction 发送一个字符串,就会发生这种情况。
  • @user92390:逐字符打印整数:printf("%d", i);

标签: c


【解决方案1】:

这只是无效的代码。即使您解决了编译时错误,结果也可能是运行时出现某种内存访问错误。结果将是一个指向您不知道它实际指向的字符串的指针。因此,当您的程序访问该内存时,您会遇到错误。

我将推测您真正需要的是像itoa() 这样的函数。这是唯一有意义的方法。

编辑

根据一条新评论,我发现您确实想要一个像 itoa() 这样的函数。简单地尝试将整数转换为字符串指针不会做你想要的。

char buff[80];

itoa(i, buff, 10);
myfunction(buff);

【讨论】:

  • 我不打算使用外部函数。我需要能够逐字符打印整数字符
  • Sheesh,要弄清楚您到底要做什么,需要做很多工作。你应该已经发布了myfunction() 的代码。那么我猜你需要编写自己的itoa() 函数。我自己已经做过很多次了。但是你需要更好地理解 C 语言。
  • 对不起,我很抱歉。 myfunction(char *string) 只是逐个遍历字符串并打印每个字符
  • 这是有效的代码,虽然结果可能会有很大差异。
  • 获取整数,将其转换为 char *,然后期望它指向原始整数值的字符串版本是无效的代码。
猜你喜欢
  • 1970-01-01
  • 2017-12-11
  • 2016-02-20
  • 2012-07-06
  • 2018-03-02
  • 1970-01-01
  • 2017-11-21
  • 2012-06-04
  • 2015-07-11
相关资源
最近更新 更多