c语言,如何实现向上翻页

qq_36347267 2016-10-09 07:17:35
fseek();中间第二个参数应该是个变量,因为每页的字数都不同,但是该怎么做
...全文
620 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-10-10
  • 打赏
  • 举报
回复
仅供参考:
#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);
}
ooolinux 2016-10-09
  • 打赏
  • 举报
回复
翻页,行数是固定的,用fgets读行。
paschen 2016-10-09
  • 打赏
  • 举报
回复
fseek是移动文件指针,和翻页没什么关系 http://en.cppreference.com/w/c/io/fseek
wang0635 2016-10-09
  • 打赏
  • 举报
回复
翻页是显示的事,跟读取文件内容关系不大。当然要显示的东西不在缓冲区中时,需要再次读文件

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧