0

我怎样才能编写一个基本函数,只使用包含在中的“write”函数#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);
}

主程序

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”函数对数字做同样的事情。

我在编译或执行软件时没有错误,但显示的是空白而不是我的号码。

4

3 回答 3

2

您必须将 转换intchar*表示形式(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>
于 2014-08-31T07:32:03.910 回答
2

我用这个:

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');
    }
}
于 2014-10-07T06:32:20.463 回答
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');
}
于 2018-07-04T02:30:19.210 回答