2013-01-31 38 views
0

我試圖使用read()函數來接受用戶輸入,但是我能在文檔中找到的唯一東西是關於從文件中讀取的,這是Linux c語言。我也想用write()做一些事情給控制檯。使用read()來取代scanf的用戶輸入

有沒有人有任何想法如何做到這一點?

+0

這裏看看http://stackoverflow.com/questions/9610064/read -stdin-in-c – StoryTeller

+0

你爲什麼不想使用scanf? – lxop

+0

@lxop可能是因爲它並不總是合適的。 (實際上,它至少在我們希望的情況下做到了。) – 2013-01-31 22:01:56

回答

1

,但我可以在文檔中找到的唯一的事情是關於從文件

不要擔心讀書,標準輸入是一個文件。

char buf[128]; 
read(STDIN_FILENO, buf, sizeof(buf)); 

我也想用寫()也顯示一些東西到控制檯。

讓我不要重複自己。

const char *s = "Hello World!\n"; 
write(STDOUT_FILENO, s, strlen(s)); 
+0

非常感謝,生病請嘗試 –

0

在這裏,這應該給你的印象如何做到這一點(0是標準輸入,1是標準輸出)

#include <unistd.h> 
#include <string.h> 
int main() { 
    char buf[100]; 
    char *msg="you wrote:"; 
    while (1) { 
    int n; 
    n=read (0, buf, sizeof(buf)); 
    write (1, msg, strlen(msg)); 
    write (1, buf, n); 
    } 
} 
+0

請小心,等到用戶輸入100個字符後再讀取(2)返回。 – vonbrand

+0

不,它不會,它也會在\ n之後返回 – pbhd