c 文件读写
有个文件,一行一行写入的,如下
a=1
b=2
c=3
现在想从下往上一行一行的给打印出来,可以怎么处理啊?
[解决办法]
http://topic.csdn.net/u/20080916/08/90c457d6-59b9-4a5f-9cb4-b3fafc074c30.html
[解决办法]
可以循环读取到最后一行 记录行数n 输出 rewind 再读取到n-1 输出 重复
这样可能很麻烦 不知道 有没有好方法
[解决办法]
如果数据块的大小是确定的,可以使用使用feek函数,跟踪跳转文件位置指针
例如
fseek( fp, -10, SEEK_END)
read...
fseek( fp, -20, SEEK_END)
read...
fseek( fp, -30, SEEK_END)
read...
[解决办法]
我照我的思路简单写了一个程序
#include <stdio.h>#include <stdlib.h>int main(int argc, char** argv){ FILE *fp; char *buf; int i, dataNum = 5, dataSize = 4, nowLoc = 0; buf = (char *)malloc(dataSize * sizeof(char)); fp = fopen("a.txt", "rb"); for(i = 0; i < dataNum; i++) { fseek(fp, - (nowLoc += dataSize) * sizeof(char), SEEK_END); fread(buf, sizeof(char), dataSize, fp); printf("%s", buf); } return 0;}
[解决办法]
正常fgets所有的行,用数组或者什么管理起来.然后想怎么打印都行
[解决办法]
简单的思路, 统计所有的 '\n' 的位置并记录到数组中
然后 使用fseek函数进行文件指针偏移读取