Code Bye

linux下从末尾读取文件

 

linux下如何实现从文件末尾读取文件,每次读一行
例如,文件内容:
11 22 33 44 55 66 77
88 99 00 11 23 11 44
34 56 78  
22  22
11 11 11 11 22 33 44 66 88 99

10分
搜“tail命令“及其对应的源代码。
10分
fopen指向文件末尾,反向扫描换行符,提取整行
如果不是写程序的话,可以考虑使用工具
10分
如果行数不是很多,就把所有行读到一个二维数组中,反向遍历这个二维数组就可以了。
引用 4 楼 wangzuxi 的回复:

如果行数不是很多,就把所有行读到一个二维数组中,反向遍历这个二维数组就可以了。

+1

仅供参考:
#include <stdio.h>
FILE *f;
int c;
long offset;
char ln[100];
void main() {
    f=fopen("a.txt","rb");//必须用b方式打开,否则文件当前读位置会受\x0d \x0a \x1a等字符的干扰
    fseek(f,-1,SEEK_END);//倒数最后一个字节之前
    while (1) {
        c=fgetc(f);
        if (""\n""==c) {
            offset=ftell(f);//记住当前位置,即刚读字符后面
            fgets(ln,100,f);
            printf("%s",ln);
            fseek(f,offset-2,SEEK_SET);//回到刚才读位置之前一个位置,即c所在位置之前一个位置
        } else
            if (fseek(f,-2,SEEK_CUR)) {//回到刚才读位置之前一个位置,即c所在位置之前一个位置失败,说明已读到文件开头
                fseek(f,0,SEEK_SET);
                fgets(ln,100,f);//读文件第一行内容
                printf("%s",ln);
                break;
            }
    }
    fclose(f);
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明linux下从末尾读取文件