C:用n#34创建一个显示数字的函数;写"功能

时间:2014-08-31 07:25:13

标签: c unistd.h

如何使用#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”函数。

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

3 个答案:

答案 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');
}