C语言新手求助:如何读取带换行的stdin完整内容?
读取stdin所有行内容的C语言实现
你的问题出在只调用了一次fgets——它只能读取一行内容(碰到换行符或达到缓冲区上限就停止),要读取全部内容,需要通过循环持续调用fgets,直到它返回NULL(表示已读到文件末尾)。
修改后的代码如下:
#include <stdio.h> int main() { char textInput[100]; // 循环读取每一行,直到fgets返回NULL(文件结束) while (fgets(textInput, 100, stdin) != NULL) { printf("%s", textInput); } return 0; }
关键说明
fgets会把每行内容(包括换行符)读取到缓冲区textInput中,用printf("%s", ...)可以直接保留原文本的换行格式。- 你设置的100字节缓冲区足够处理当前文本文件的内容;如果遇到超过99字符的超长行,
fgets会分多次读取,循环依然能完整输出整行内容。 - 用
< text.txt方式导入文件时,stdin会自动关联到该文件,循环会一直读到文件末尾才停止。
内容的提问来源于stack exchange,提问作者vrivn3
相关产品推荐
相关产品推荐

