如何使用#include<unistd.h>
中包含的“写入”功能编写基本功能,以显示数字?
示例:
ft_putnbr.c
int ft_putnbr(int nbr)
{
write(1, &nbr, sizeof(int));
return (0);
}
int ft_putchar(char c)
{
write(1, &c, 1);
return (0);
}
的main.c
int ft_putnbr(int nbr);
int ft_putchar(char c);
int main(void)
{
ft_putnbr(6);
ft_putchar('\n');
ft_putchar('a');
return (0);
}
ft_putchar工作正常,但我想用一个数字做同样的事情,用我的“ft_putnbr”函数。
我正在编译或执行软件时没有错误,但是显示空白而不是我的号码。
答案 0 :(得分:2)
您必须将int
转换为char*
表示(ASCII转换)。例如:
int nbr = 1234;
char str[16]; /* max size expected: 15 digits + 1 null character */
sprintf(str, "%d", nbr);
然后:
write(1, str, strlen(str));
哟需要包含以下内容:
#include <stdio.h>
#include <string.h>
答案 1 :(得分:0)
我用这个:
void ft_putnbr(int nbr)
{
if (nbr < 0)
{
ft_putchar('-');
ft_putnbr(-nbr);
}
else if (nbr > 9)
{
ft_putnbr(nbr / 10);
ft_putnbr(nbr % 10);
}
else
{
ft_putchar(nbr + '0');
}
}
答案 2 :(得分:0)
这也检查int_min和int_max
void ft_putnbr(int nb)
{
if (nb == -2147483648)
{
ft_putchar('-');
ft_putchar('2');
ft_putnbr(147483648);
}
else if (nb < 0)
{
ft_putchar('-');
ft_putnbr(-nb);
}
else if (nb > 9)
{
ft_putnbr(nb / 10);
ft_putnbr(nb % 10);
}
else
ft_putchar(nb + '0');
}