【问题标题】:Read from stdin until EOF从标准输入读取直到 EOF
【发布时间】:2013-03-19 22:15:50
【问题描述】:

在按下 CTRL+D 之前,我一直无法从标准输入读取。我必须使用来自 unistd.h 的read()。我正在尝试模拟 cat 功能。有没有办法让我的缓冲区(我用 %s 打印)看起来整洁而没有来自read(STDIN_FILENO, buf, 256) 的不必要的空格?

【问题讨论】:

  • 没有看到代码很难知道建议什么。
  • 我不确定你的问题到底是什么,因为你没有发布任何代码、没有错误消息,也没有输出(预期的或实际的),但这里有一个在黑暗中的镜头:阅读函数不会为您终止,所以您应该这样做:int rd = read(STDIN_FILENO, buf, 255); buf[rd]=0x0;,假设 buf 被声明为 char buf[256]

标签: c stdin unistd.h


【解决方案1】:

我正在尝试模拟 cat 功能。

这是一个开始:

ssize_t nread, nwrite;

while ((nread = read(STDIN_FILENO, buf, sizeof buf)) > 0) {
    nwrite = write(STDOUT_FILENO, buf, nread);
    /* Error handling and partial writes left as exercise. */
}

【讨论】:

  • 谢谢我已经有了这段代码,问题是sizeof(buf)..在我的代码中发现了一个小错误,我在阅读后使用prinf作为buf......
  • @Alex sizeof 有什么问题?
  • 对不起,来晚了,我没有注意到我的代码之前有一个 printf() 用于读/写 stdin/out 并造成了一些混乱;D.. 无论如何都会在我之后发布一些代码完成了..
猜你喜欢
  • 1970-01-01
  • 2018-09-24
  • 2023-03-06
  • 2017-10-18
  • 1970-01-01
  • 2018-04-28
  • 1970-01-01
  • 2014-05-09
  • 2021-08-02
相关资源
最近更新 更多