fgets 在换行符后包含文本

fgets to include text after newline

我想制作一个字符数组并将整个输入存储在其中(即使输入在某些时候包含“\n”。当我使用时:

char vhod[50];

fgets(vhod, sizeof(vhod), stdin);

它存储输入直到第一个换行符。如何获取此数组中的整个文本(包括新行之后的文本)。 例子: 如果我的文字是:

Hello I need new keyboard.
This is not good.

我的数组将只包含 "Hello I need new keyboard."。我希望能够阅读所有内容,直到输入 a < input-1 结束 我无法使用 FILE open/close/read 函数,因为它是从键盘输入的。

虽然 fgets() 旨在读取最多 '\n' 个字符或指定的字节数,但您可以使用 fread()1相反,像这样

size_t count = fread(vhod, 1, sizeof(vhod), stdin);

并且 count 将包含读取的项目数,在这种情况下与字节数相同,因为您提供大小 1sizeof(char).

但是请注意,如果您要使用任何假定终止 '[=16=]' 的函数,则必须非常小心地添加终止 '[=16=]'


1阅读手册了解更多信息。