C 从标准DIN读取,直到EOF

C 从标准DIN读取,直到EOF,c,stdin,unistd.h,C,Stdin,Unistd.h,在按下CTRL+D之前,我一直无法读取标准文本。我必须使用unistd.h中的read()。我正在尝试模拟cat功能。有没有办法使我的缓冲区(我用%s打印)看起来整洁,而不必使用read(STDIN\u FILENO,buf,256) 我正在尝试模拟cat功能 这是一个开始: ssize_t nread, nwrite; while ((nread = read(STDIN_FILENO, buf, sizeof buf)) > 0) { nwrite = write(STDOU

在按下CTRL+D之前,我一直无法读取标准文本。我必须使用unistd.h中的
read()
。我正在尝试模拟cat功能。有没有办法使我的缓冲区(我用%s打印)看起来整洁,而不必使用
read(STDIN\u FILENO,buf,256)

我正在尝试模拟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. */
}

如果没有看到代码,就很难知道该建议什么。我不确定你的问题到底是什么,因为你没有发布代码,没有错误消息,也没有输出(预期的或实际的),但这里有一个秘密:read函数不会为空终止,所以你应该这样做:
int rd=read(STDIN\u FILENO,buf,255);buf[rd]=0x0
,假设buf声明为
char buf[256]
谢谢,我已经有了这段代码,问题是sizeof(buf)。。在我的代码中发现了一个小错误,在阅读之后,我正在使用prinf作为buf…@Alex
sizeof
有什么问题吗?很抱歉,时间太晚了,我没有注意到在我的代码之前有一个printf(),用于读/写stdin/out,并且造成了一些混乱;D无论如何,我会发布一些代码后,我做。。