日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

输出一个文件的最后n行数据,如果文件总行数不足n行,则显示全部数据

發布時間:2023/12/9 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 输出一个文件的最后n行数据,如果文件总行数不足n行,则显示全部数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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 2 lineCount = 4 L0: 3 chinese Chinese environment L1: 4 english English environment [zcm@t #94]$./a test2.txt 5 lineCount = 4 L1:  1 come one, obay L2: 2 <Quidway> language-mode ? L3: 3 chinese Chinese environment L4: 4 english English environment [zcm@t #95]$./a test2.txt 4 lineCount = 4 L1:  1 come one, obay L2: 2 <Quidway> language-mode ? L3: 3 chinese Chinese environment L4: 4 english English environment [zcm@t #96]$./a test2.txt 3 lineCount = 4 L1: 2 <Quidway> language-mode ? L2: 3 chinese Chinese environment L0: 4 english English environment [zcm@t #97]$


?

總結

以上是生活随笔為你收集整理的输出一个文件的最后n行数据,如果文件总行数不足n行,则显示全部数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。