【发布时间】:2015-04-09 01:00:05
【问题描述】:
我想创建一个字符数组并将整个输入存储在其中(即使输入在某些时候包含“\n”。当我使用时:
char vhod[50];
fgets(vhod, sizeof(vhod), stdin);
它存储输入直到第一个换行符。如何获取此数组中的整个文本(包括换行后的文本)。 例子: 如果我的文字是:
Hello I need new keyboard.
This is not good.
我的数组将只包含"Hello I need new keyboard."。我希望能够阅读所有内容,直到输入 a
【问题讨论】:
-
是什么让你认为在键盘输入时不能使用
read()? -
您不必调用
open(),因为标准输入已经打开。 -
如果您使用标准 I/O 库,那么
fread()是显而易见的选择,而不是文件描述符函数read()。当然,你需要小心不要溢出缓冲区; 50个字符相当小。或者你可以增量使用fgets();或者您可以考虑使用 POSIX 函数getdelim()(getline()的近亲),将诸如'\0'之类的字符作为“行分隔符”传递,因此它会读取所有内容,直到空字节或 EOF。
标签: c input format fgets getline