我剛剛得到了一個半功能頭部程序,我需要幫助將它製作成尾部程序,它將在文件末尾顯示x行數。這是我的頭碼。 我很難考慮如何讓計數器讀取整個文件,然後從底部開始並顯示文件的最後一行。將頭部程序轉換爲尾部C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 1024
int numLines = 0;
int linecount = 0;
FILE *src = NULL;
char ch[MAX];
void GetArgs (int argc, char **argv){
if(argc != 4 || argc != 2) {
printf("Error not enough arguments to continue \n", argv[0]);
exit(-1);
}// end if argc doenst = 4 or 2
if(argc == 2){
src = fopen(argv[1], "r:");
numLines=10;
}// end argc = 2
if(argc == 4){
if (strcmp (argv[1], "-n") !=0){
numLines = atoi (argv[2]);
src = fopen (argv[3], "r");
if (src == NULL){
fputs ("Can't open input file." , stdout);
exit (-1);
}
while (NULL != fgets(ch, MAX, src)){
linecount++;
fputs(ch, stdout);
if (linecount == numLines){
break;
}
}
}//end of nested if
else if (strcmp (argv[2], "-n") !=0){
numLines = atoi (argv[3]);
src = fopen (argv[1], "r");
if (src == NULL){
fputs ("Can't open input file." , stdout);
exit (-1);
}
while (NULL != fgets(ch,MAX, src)){
linecount++;
fputs(ch, stdout);
if (linecount == numLines){
break;
}
}
}//end of else
}//end if argc == 4
}// end GetArgs
int main(int argc, char **argv){
GetArgs(argc, argv);
fclose(src);
}
你試過了什麼?你如何在文字上做文字?你有沒有考慮向後讀文件?等等...... –
尾部稍微複雜一些,但是對於一個簡單的實現,您只需要在讀取文件時保留最後N行,然後在打開EOF時輸出這N行。提示:使用循環緩衝區。 –
我想讀取整個文件獲取數字,然後打印循環中的行。恩。 while(numLines> 0){fileMaxlines - numLines(用戶輸入) numlines--} –