[英]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.