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

C语言如何从文本文件中打印指定行内容?是否需要使用数组?

C语言读取文本文件指定行的实现方案

功能可行性说明

C语言完全可以实现从文本文件中读取并打印指定行内容,仅依赖标准库<stdio.h>就能完成,无需引入其他第三方组件。

数组使用说明

实现该功能不需要强制使用数组,可以根据使用场景选择两种实现思路:

思路1:不使用数组(大文件/行长度不确定场景优先)

该方案仅通过逐字符遍历计数定位目标行,内存开销极低,也不会出现行长度溢出问题。
示例代码:

#include <stdio.h>
#include <stdlib.h>

#define TARGET_LINE 5 // 替换为实际需要打印的行号,默认行号从1开始计数

int main() {
    FILE *fp = fopen("test.txt", "r");
    if (fp == NULL) {
        perror("文件打开失败");
        return EXIT_FAILURE;
    }

    int current_line = 1;
    int ch;
    // 跳过目标行之前的所有内容
    while (current_line < TARGET_LINE) {
        ch = fgetc(fp);
        if (ch == '\n') {
            current_line++;
        } else if (ch == EOF) {
            printf("文件总行数不足,不存在第%d行\n", TARGET_LINE);
            fclose(fp);
            return EXIT_FAILURE;
        }
    }
    // 打印目标行内容
    while ((ch = fgetc(fp)) != EOF && ch != '\n') {
        putchar(ch);
    }
    putchar('\n');

    fclose(fp);
    return EXIT_SUCCESS;
}

思路2:使用数组(行长度可控场景优先)

如果提前可以确定文件的最长行长度,用数组存储每行内容的方案代码更简洁、可读性更高。
示例代码:

#include <stdio.h>
#include <stdlib.h>

#define TARGET_LINE 5
#define MAX_LINE_LEN 1024 // 按文件实际最大行长度调整,避免内容截断

int main() {
    FILE *fp = fopen("test.txt", "r");
    if (fp == NULL) {
        perror("文件打开失败");
        return EXIT_FAILURE;
    }

    char line_buf[MAX_LINE_LEN];
    int current_line = 1;
    while (fgets(line_buf, MAX_LINE_LEN, fp) != NULL) {
        if (current_line == TARGET_LINE) {
            printf("%s", line_buf);
            break;
        }
        current_line++;
    }

    if (current_line < TARGET_LINE) {
        printf("文件总行数不足,不存在第%d行\n", TARGET_LINE);
    }

    fclose(fp);
    return EXIT_SUCCESS;
}

注意事项

  • 上述示例默认行号从1开始计数,如果需要从0开始计数,调整current_line的初始值即可
  • 使用数组方案时如果行长度超过MAX_LINE_LEN的配置,会出现行内容截断问题,该场景下优先选用无数组的逐字符遍历方案
  • 文件操作完成后必须调用fclose释放文件指针,避免资源泄漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:45:02