C从第x行到第y行读取文件

问题描述 投票:0回答:2

我是C语言的初学者,我想知道是否有一种方法可以从一行到另一行读取文件,例如从10号到20号。我搜索了几次,只找到了逐行读取文件的方法

c file
2个回答
0
投票

在大多数现代环境中,line的概念是一个约定,字符0xa(ascii换行符)表示行的结尾。某些CPM派生的系统过时,要求在行尾字​​符之前坚持0xd(ascii回车)。在更老的环境中,line记录为80个字节,对应于单独的打孔卡。

[在较旧的固定记录系统中,第10行在文件中的偏移量为10 * 80 = 800。在面向stream的较新的io [btw,这里较新的是指1970年代后期],如果不检查文件内容就无法计算行位置。因此,正如其他人所评论的那样,您必须阅读并忽略不需要的行。如果对于同一文件的多次查询至关重要,则建立行位置索引并使用它。


0
投票
#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);
}

lines.txt:我是C语言的初学者,我想知道如果有一种阅读方法一行文件到另一个10号到20号。我搜索了几次只有找到的方法逐行读取文件。认识可以回答的人吗?

© www.soinside.com 2019 - 2024. All rights reserved.