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

如何用fgets读取TXT文件每行前255字节并跳过剩余内容?

每行仅读取前255字节的实现方案

你当前代码的问题是:fgets 遇到超过 BUFFER_SIZE-1 长度的行时,会分多次读取剩余内容,导致整行都被输出,不符合“超过255字节就跳过剩余部分”的需求。下面是修正后的代码:

修正代码

#define BUFFER_SIZE 256  // 要读255个有效字符,需留1字节存终止符'\0'
char string[BUFFER_SIZE];

while (fgets(string, BUFFER_SIZE, input)) {
    fprintf(output, "%s", string);
    
    // 判断当前是否读取完一整行:如果字符串里没有换行符,说明行还没读完
    if (!strchr(string, '\n')) {
        // 跳过该行剩余的所有字符,直到遇到换行或文件结束
        int c;
        while ((c = fgetc(input)) != EOF && c != '\n') {
            // 空循环,仅丢弃多余字符
        }
    }
}

关键说明

  1. BUFFER_SIZE的取值:fgets的第二个参数是“最多读取的字符数(含终止符\0)”,所以要读取255个有效字节,需要把BUFFER_SIZE设为256,否则设为255的话最多只能读254个有效字符。
  2. 剩余内容跳过逻辑:用strchr检查读取的字符串是否包含换行符,若不包含,说明当前行还有剩余内容,用fgetc逐个读取并丢弃,直到碰到换行符或文件结尾,这样就不会把超过255字节的部分输出。

内容的提问来源于stack exchange,提问作者Kurbamit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:05:29