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函数将自动给出,所以我只需要制作原型函数
感谢您的帮助
答案 0 :(得分:1)
您的代码无法按预期运行的原因是,当您打算传递指向写函数的指针时传递了一个整数,而写的最后一个参数应为您写入文件描述符的长度(标准输出)。
以下是C指针的说明,可以帮助您了解如何使用它们
这里有一些关于写功能的资源。
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);
}