私はこのコードで永遠に働いており、私のコードで何が間違っているのか分からないようです。私はプログラムが2つのコマンドライン引数を受け入れるようにしようとしています。最初には読み込むテキストファイルの名前を、2番目にはファイルの行数を表示します。私は、行の数をカウントし、新しい行の文字に達するたびに1つを追加するループを作ろうとしましたが、テキストの行を印刷する別のループがありましたが、私は多くの問題を抱えています。私はプログラミングクラスの紹介にすぎません。これは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