使用read()来取代用户输入而不是scanf

时间:2013-01-31 21:52:28

标签: c linux io low-level-code

我试图使用read()函数来获取用户输入,但我在文档中找到的唯一一件事就是从文件中读取,这是用Linux c语言编写的。我也想用write()做一些东西给控制台。

有谁知道这是怎么做到的?

2 个答案:

答案 0 :(得分:1)

  

但我在文档中唯一能找到的就是从文件中读取

别担心,标准输入是一个文件。

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

我也想用write()做一些东西给控制台。

我不要重复自己。

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

答案 1 :(得分:0)

这里应该给你一个印象如何做(0是stdin,1是stdout)

#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);
  }
}