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