我是C语言的初学者,我想知道是否有一种方法可以从一行到另一行读取文件,例如从10号到20号。我搜索了几次,只找到了逐行读取文件的方法
在大多数现代环境中,line的概念是一个约定,字符0xa(ascii换行符)表示行的结尾。某些CPM派生的系统过时,要求在行尾字符之前坚持0xd(ascii回车)。在更老的环境中,line记录为80个字节,对应于单独的打孔卡。
[在较旧的固定记录系统中,第10行在文件中的偏移量为10 * 80 = 800。在面向stream的较新的io [btw,这里较新的是指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);
}
lines.txt:我是C语言的初学者,我想知道如果有一种阅读方法一行文件到另一个10号到20号。我搜索了几次只有找到的方法逐行读取文件。认识可以回答的人吗?