写入标准输出并从标准输入读取C

问题描述:

我正在写两个c文件,一个是写入(通过标准输出),另一个是读取(通过标准输入)。写入标准输出并从标准输入读取C

但读取的代码总是挂着read(),我试过了fread函数但是没用。

有人可以提供建议吗?

写例如:

int main() { 
    char *a_string="Hello"; 
    write(fileno(stdout), a_string, strlen(a_string)+1); 

    return 0; 
} 

读例如:

int main() { 
    char buffer[100]; 
    read(fileno(stdin), buffer, 100-1); 
    printf("buffer=%s\n", buffer); 

    return 0; 
} 
+0

看看[fgets](https://www.tutorialspoint.com/c_standard_library/c_function_fgets.htm) – LPs

+0

通常你的代码会挂起,直到你按下Enter键。此外你的字符串不会被零终止。使用'fgets'来阅读,'fputs'来写作。 –

+0

由于某种原因,我只想使用read()和write()。 –

阅读代码总是与read()挂起,我试过fread函数但没用。

这是因为readfread,不像fgets和类似的功能,当用户输入一个换行符不要放弃读书(按输入)。它一直等到读取EOF或读取指定的字节。

要发送EOF到read您必须按Ctrl + D

您需要输入EOF停止,在Linux中,它是按Ctrl + d。

+0

在linux中,stdin和stdout是未命名的管道。当关闭管道的所有写入描述符时,它将EOF发送到该管道的读取描述符。 – nopasara

+0

@nopasara我不明白这是如何特别相关。 –

+0

@MD XF可能不是,我虽然他一起编了两个节目。第一个编写程序的例子是什么? – nopasara