将 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=]';
我是 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=]';