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 将包含读取的项目数,在这种情况下与字节数相同,因为您提供大小 1
即 sizeof(char)
.
但是请注意,如果您要使用任何假定终止 '[=16=]'
的函数,则必须非常小心地添加终止 '[=16=]'
。
1阅读手册了解更多信息。
我想制作一个字符数组并将整个输入存储在其中(即使输入在某些时候包含“\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 将包含读取的项目数,在这种情况下与字节数相同,因为您提供大小 1
即 sizeof(char)
.
但是请注意,如果您要使用任何假定终止 '[=16=]'
的函数,则必须非常小心地添加终止 '[=16=]'
。
1阅读手册了解更多信息。