You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 08:15:43