将 fgets 用于标准输入的多行

Using fgets for multiple lines with stdin

我是 C 编程的新手,我正在尝试将 stdin 中的多行存储到一个数组中。我成功地将每一行存储在数组中,但它不会附加新行,而是将其存储在数组的当前内容上。

我不知道如何指定它应该在数组当前内容的末尾追加行。有人可以告诉我如何进行吗? 这是我的代码:

#include <stdio.h>

char line[150];

while (fgets(line,20,stdin) != NULL){

}
printf("%s",line);

标准输入:

Hi
 tv
truck

当前正在打印的内容:

truck

我想打印但不知道如何附加行的内容:

Hi
 tv
truck

line的内容应该是:

[H,i,\n,' ',t,v,\n,t,r,u,c,k]

您需要如下内容

size_t n = 0;

while ( fgets( line + n,20,stdin) != NULL)
{
    n += strlen( line + n );
}

如果需要去掉最后一个换行符'\n'那么在循环之后可以添加如下语句

if ( line[n-1] == '\n' ) line[n-1] = '[=11=]';