输出一个文件的最后n行数据,如果文件总行数不足n行,则显示全部数据
来源:互联网 发布:利用js让网站自动登录 编辑:程序博客网 时间:2024/06/16 06:15
C程序,功能如题,代码如下:
/*功能:输出一个文件的最后n行数据,如果文件总行数不足n行,则显示全部数据基本思路:产生一个长度为n的二维数组,将它作为一个循环队列来看待*/#include <stdio.h>#include <stdlib.h>#include <string.h>#define BUFLEN 256// 显示一个文件的最后len行数据void run(char *filename, int len){int i;char **buf = NULL;char temp[BUFLEN] = {0};FILE *fp;buf = malloc(len * sizeof(char*));for(i = 0; i < len; i++){buf[i] = (char*)malloc(BUFLEN * sizeof(char));memset(buf[i], 0, BUFLEN * sizeof(char));// 清零}if((fp = fopen(filename, "r")) == NULL){printf("open file [%s] failed\n", filename);}else{i = 0;int lineCount = 0;// 文件的实际行数while(fgets(temp, BUFLEN, fp) != NULL){strcpy(buf[i], temp);i = (i + 1) % len; lineCount++;// 数据行数加1}printf("lineCount = %d\n", lineCount);if(lineCount <= len)// 文件实际行数小于等于需要提取的行数{for(i = 0; i < lineCount; i++)printf("L%d: %s", i+1, buf[i]);}else{int start = i;do {printf("L%d: %s", i, buf[i]);i = (i + 1 + len) % len;} while (i != start);}}fclose(fp);for(i = 0; i < len; i++)free(buf[i]);free(buf);}int main(int argc, char *argv[]){if(argc < 3){printf("Usage: %s <filename> <n>\n", argv[0]);}else{int n = atoi(argv[2]);run(argv[1], n);printf("\n");}return 0;}
运行结果:
[zcm@t #93]$./a test2.txt 2lineCount = 4L0: 3chinese Chinese environmentL1: 4english English environment[zcm@t #94]$./a test2.txt 5lineCount = 4L1: 1come one, obayL2: 2<Quidway> language-mode ?L3: 3chinese Chinese environmentL4: 4english English environment[zcm@t #95]$./a test2.txt 4lineCount = 4L1: 1come one, obayL2: 2<Quidway> language-mode ?L3: 3chinese Chinese environmentL4: 4english English environment[zcm@t #96]$./a test2.txt 3lineCount = 4L1: 2<Quidway> language-mode ?L2: 3chinese Chinese environmentL0: 4english English environment[zcm@t #97]$
- 输出一个文件的最后n行数据,如果文件总行数不足n行,则显示全部数据
- 给定一个源代码文件,输出该文件的总行数、空行数、注释行数、代码行数
- 给定一个源代码文件(.cs, .java),输出该文件的总行数、空行数、注释行数、代码行数
- 给定一个源代码文件(.cs, .java),输出该文件的总行数、空行数、注释行数、代码行数
- 给定一个源代码文件(.cs, .java),输出该文件的总行数、空行数、注释行数、代码行数
- 给定一个源代码文件(.cs, .java),输出该文件的总行数、空行数、注释行数、代码行数
- 给定一个源代码文件(.cs, .java),输出该文件的总行数、空行数、注释行数、代码行数
- 给定一个源代码文件(.cs, .java),输出该文件的总行数、空行数、注释行数、代码行数
- 给定一个源代码文件(.cs, .java),输出该文件的总行数、空行数、注释行数、代码行数
- 给定一个源代码文件(.cs, .java),输出该文件的总行数、空行数、注释行数、代码行数
- 第七章:输入与输出,给定一个源代码文件(.cs, .java),输出该文件的总行数、空行数、注释行数、代码行数。
- 从键盘输入一个整形数n,如果输入正确的话,输出10-n后的值,如果输入错误的话输出“not int” 最后输出end
- 挺激动的,琢磨了不久(目标1:给定一个源代码文件(.cs, .java),输出该文件的总行数、空行数、注释行数、代码行数)
- 作业一目标一给定一个源代码文件(.cs, .java),输出该文件的总行数、空行数、注释行数、代码行数
- 《C#程序设计》第一次作业 给定一个源代码文件(.cs, ),输出该文件的代码行数、注释行数、空行数、代码总行数、。
- C#第一次作业:输出文件总行数、空行数、注释行数、代码行数
- 输出该目录下指定类型文件(.cs, .java)的个数、文件的总行数、空行数、注释行数、代码行数
- 输出该目录下指定类型文件(.cs, .java)的个数、文件的总行数、空行数、注释行数、代码行数
- Android多语言定制的机制
- 敏捷测试理论以及实践 - 2
- 《java中System类》
- AIX RAW LVM 的 4k Offset 问题
- linux 多线程编程 同步与互斥
- 输出一个文件的最后n行数据,如果文件总行数不足n行,则显示全部数据
- ubuntu中vim和gedit中文乱码解决方法
- 分享商务礼仪课程的3A原则
- BroadcastReceiver类onReceive方法说明..
- 敏捷测试理论以及实践 - 3
- 《java StringBuffer类》
- 为解决扩展性瓶颈雅虎计划重构Hadoop-MapReduce
- UML核心元素--读书笔记
- 敏捷测试理论以及实践 - 4