写入标准输出并从标准输入读取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;
}
答
阅读代码总是与read()挂起,我试过fread函数但没用。
这是因为read
和fread
,不像fgets
和类似的功能,当用户输入一个换行符不要放弃读书(按输入)。它一直等到读取EOF或读取指定的字节。
要发送EOF到read
您必须按Ctrl + D。
看看[fgets](https://www.tutorialspoint.com/c_standard_library/c_function_fgets.htm) – LPs
通常你的代码会挂起,直到你按下Enter键。此外你的字符串不会被零终止。使用'fgets'来阅读,'fputs'来写作。 –
由于某种原因,我只想使用read()和write()。 –