0
我一直在這個代碼上一直工作,我似乎無法弄清楚我的代碼有什麼問題。我試圖讓程序接受兩個命令行參數,第一個是要讀取的文本文件的名稱,第二個是要打印的文件的行數。我試圖製作一個循環來計算行數,並在每次到達新行字符時添加一行,另一個循環打印文本的行,但我遇到了很多麻煩。我只是介紹編程類,這是C語言,我嘗試了很多方法來完成這個工作。這是我的代碼中應該這樣做的功能。任何幫助將不勝感激!如何使用C打印文件的最後n行?
char ch = 0;
long num_lines = 0;
while(!feof(fileequals)){
ch = fgetc(fileequals);
if(ch == '\n'){
num_lines++;
}
}
fseek(fileequals, 0, SEEK_SET);
const int length = 100;
char line[length];
char *c = 0;
long line_count = 0;
if(num_rows_to_read > num_lines){
num_rows_to_read = num_lines;
}
do{
c = fgets(line, length, fileequals);
if (c != NULL && (line_count >= num_lines - num_rows_to_read)){
printf("%s", line);
line_count++;
}
else{
continue;
}
}while (c != NULL);
}
[?爲什麼「而(!FEOF(文件))」永遠是錯的(http://stackoverflow.com/questions/5431941/why-is- while-feof-file-always-wrong) – kaylum
當前程序的問題究竟是什麼?請提供投入,預期產出和實際產出。並建議您使用調試器來逐步執行您的程序,以找出事情出錯的地方。 – kaylum
輸入應該是任何帶有單詞的文件,並且輸出應該是文件的最後n行,但是當我使用這個代碼時,我根本沒有輸出,因爲我猜因爲某種原因它永遠不會輸入打印每行的循環 – emmag