簡體   English   中英

C 從第 x 行到第 y 行讀取文件

[英]C Read a file from line x to line y

我是 C 的初學者,我想知道是否有辦法將文件從一行讀取到另一行,例如從 10 號到 20 號。 找了幾遍,只找到了逐行讀取文件的方法

在最現代的環境中,的概念是一種慣例由此字符是0xA(ASCII換行)表示的線的端部。 一些 CPM 派生系統有一個時代錯誤,它在行尾字符之前堅持 0xd(ascii 回車)。 在更舊的環境中,一行是 80 字節的記錄,對應於一張單獨的穿孔卡片。

在較舊的固定記錄系統中,第 10 行在文件中的偏移量為 10*80 = 800。 在較新的、面向的 io [順便說一句,這里的較新指的是 1970 年代后期],您無法在不檢查文件內容的情況下計算行位置。 因此,正如其他人評論的那樣,您必須閱讀並忽略您不想要的行。 如果它對同一文件的多個查詢至關重要,請構建行位置索引並使用它。

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

#define FIRST_LINE (3)
#define LAST_LINE (7)

#define FILE_NAME "lines.txt"

int main(void) {
    char buffer[BUFSIZ];
    FILE * file;
    int line;

    file = fopen(FILE_NAME, "r");
    if ( file == NULL ) {
        perror("fopen");
        exit(EXIT_FAILURE);
    }

    line = 0;
    while ( fgets(buffer, BUFSIZ, file) != NULL ) {
        if ( ++line < FIRST_LINE )
            continue;
        else if ( line > LAST_LINE )
            break;
        else
            printf("%s", buffer);
    }

    if ( fclose(file) ) {
        perror("fclose");
        exit(EXIT_FAILURE);
    }

    exit(EXIT_SUCCESS);
}

行.txt:
我是 C 的初學者,
我想知道
如果有一種閱讀方式
一行中的一個文件
到另一個例如從
10 日到 20 日。
找了好幾遍
並且只找到方法
逐行讀取文件。
知道誰可以回答?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM