unix环境编程之more编写
来源:互联网 发布:手机上音乐截取软件 编辑:程序博客网 时间:2024/06/05 17:59
more命令介绍:
more能分页显示文件的内容。more会显示第一屏文件的内容,在屏幕的底部more用反白字体显示文件的百分比,这时如果按空格,文件下一屏的内容会显示出来,如果按回车,则显示的是下一行,如果输入q则结束(无需再按空格),输入help,显示more的联机帮助。
PS:
fgets是会自动后移的。如果使用fgets()读取某个文件,第一次读取的bufsize为5,而文件的第一行有10个字符(算上'\n'),那么读取文件的指针会偏移至当前读取完的这个字符之后的位置。也就是第二次再用fgets()读取文件的时候,则会继续读取其后的字符。
这只是一个简单的版本,与实际中的more相比还有很多需要改进的地方
#include<stdio.h>#define CHARLINE 512#define PAGELEN24void do_more(FILE *);int se_more(FILE *);void main(int argc,char *argv[]){if(argc==1){do_more(stdin);}elseif(fp=fopen(argv[1],'r')!=NULL){do_more(fp);fclose(fp);}elseexit(1);}void do_more(FILE *fp){int line[CHARLINE];int lines_num=0;int see_more(FILE *),replay;FILE *fd_tty;fd_tty=fopen("/dev/tty","r");if(fd_tty==NULL){printf("error:not found tty");}while(fgets(line,CHARLINE,fp)){if(lines_num==PAGELEN){replay=see_more(fd_tty);if(replay==0)break;}if(fputs(line,stdout)==EOF){printf("error");}lines_num++;}}int see_more(FILE *cmd){char a;printf("\033[7m more? \033[m");while((a=getc(cmd))!=EOF){if(a=='q'){return 0;}if(a==' '){return 1;}if(a=='\n'){return PAGELEN;}}}
0 0
- unix环境编程之more编写
- 《Unix环境高级编程》学习之编写守护进程
- unix环境编程之函数
- Unix环境编程之进程环境
- UNIX环境高级编程之进程环境
- Unix环境编程之 进程环境
- 【温故而知新】Unix环境编程之进程控制
- unix环境高级编程之unbuffered io
- unix网络编程之环境配置
- UNIX环境高级编程之信号
- UNIX 环境高级编程之我见
- 《unix环境高级编程》学习之 --- vfork()
- unix 环境高级编程之sigsuspend函数
- unix 环境高级编程之 system函数
- UNIX环境编程笔记之STDIN_FILENO
- Unix网络编程之环境搭建
- UNIX环境高级编程之apue.h
- 学习《Unix环境高级编程》之问题
- android studio activity传参
- Dos之For循环示例
- HDU 1978 How many ways DP路径
- 前端新人学习横向下拉菜单总结
- 动手实验室—SSM2框架整合实例
- unix环境编程之more编写
- 2017年人工智能的三大趋势
- 自制悬浮框,愉快地查看栈顶 Activity
- Android:打电话和发短信:由姓名获取到电话
- PHP---图表技术
- 下拉选择框
- virtualbox中安装完Ubuntu分辨率可选项很少的一种解决办法
- 内核中信号发送的过程
- 部署SQL server 2008 R2三节点多实例故障转移群集全过程