我想在使用写入功能时显示整数

时间:2020-01-28 06:20:18

标签: c integer

1)我需要创建一个函数来显示作为参数输入的数字。该功能必须能够显示int类型变量中的所有可能值。

2)和原型应类似于void ft_putnbr(int nb);

这是我的代码,

#include <unistd.h>

void    ft_putnbr(int nb)
{
    write(1, &nb, 1);
}

int     main()
{
    ft_putnbr(42);
}

结果不是整数,就像.. asciicode 它显示“ *”

我的代码有什么问题?您可以更正我的代码吗?或提出更合适的方法?

plus)int main函数将自动给出,所以我只需要制作原型函数

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

您的代码无法按预期运行的原因是,当您打算传递指向写函数的指针时传递了一个整数,而写的最后一个参数应为您写入文件描述符的长度(标准输出)。

以下是C指针的说明,可以帮助您了解如何使用它们

https://boredzo.org/pointers/

这里有一些关于写功能的资源。

https://en.wikibooks.org/wiki/C_Programming/POSIX_Reference/unistd.h/write

http://codewiki.wikidot.com/c:system-calls:write

在使用write之前,您需要将其视为字符串,因此您可以将它转换为has之前的字符串,或者将其逐位打印

这是您的处理方法

void ft_putnbr(int n) {
  char * const str_num = itoa(n);
  const size_t len = strlen(str_num)
  write(1, str_num, len);
}

答案 1 :(得分:1)

您需要构建数字的字符串表示形式,否则您将打印二进制文件。

void ft_putnbr(int nb)
{
   char nbuf[16];
   const int len = snprintf(nbuf, sizeof nbuf, "%d", nb);
   write(1, nbuf, len);
}