2014-08-31 14 views
-2

我怎麼能寫一個基本功能,只是包含在#include<unistd.h>「寫入」功能,以顯示一些C:創建一個函數來diplay號只是「寫」功能

例如:

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

我看到有一些票以不明確的方式結束。他的問題有什麼不清楚的地方?他具有最小化的可編譯代碼,他說明了預期的輸出和實際輸出,他指出存在問題的函數。 – bolov 2014-08-31 07:49:53

回答

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

您必須將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> 
+0

15位數字? 32位整數有10位數(+符號)64位整數有20位數(+符號)。我猜平均值是15:p – bolov 2014-08-31 07:56:29

+1

這只是一個例子,他可以根據自己的需要調整 – 2014-08-31 07:57:48

+0

@Miguel Prz:謝謝,但我只能使用unistd.h ... – Vetea 2014-08-31 08:47:49

相關問題