私は2つのテキストファイルを持っています。あなたは彼らが注文されて見ることができるようにCで注文を破ることなく2つの順序付けされたテキストファイルを別のものにマージする
Andrew Hall
Arnold Price
Shelley Baker
と、
Arnold Hill
Veronica Clay
。私はそれらを再度注文された別のテキストファイルに結合する必要があります。したがって、期待される出力は次のとおりです。
Andrew Hall
Arnold Hill
Arnold Price
Shelley Baker
Veronica Clay
ただし、出力は次のようになります。
Andrew Hall
Arnold Hill
Arnold Price
は、私は何とか私は両方のファイルとの両方fsort1の最後の行を失っていますし、そのファイルの最後に到達fsort2と思います。どのように一般的な解決策を見つけることができますか?私は間違って何をしていますか?
私のコードはそうです。
fgets(name1, 100, fsort1);
fgets(name2, 100, fsort2);
while(!feof(fsort1) || !feof(fsort2)){
if(strcmp(name1, name2)<0){
fprintf(foutput, "%s", name1);
fgets(name1, 100, fsort1);
}
else{
fprintf(foutput, "%s", name2);
fgets(name2, 100, fsort2);
}
}
ありがとうございます。
可能な複製(https://stackoverflow.com/questions/5431941/why-is- while-feof-file-always-wrong) –
[なぜwhile(!feof(file))が常に間違っているのですか?](https://stackoverflow.com/questions/5431941/why-is-while-feof- file-always-wrong) –
また、 '!feof(fsort1)|| !feof(fsort2) 'は読みやすい論理条件ではありません。 '!(feof(fsort1)&& feof(fsort2))'を読む方が簡単です。しかし、1つのファイルの終わりに達すると、コードは引き続き両方のファイルから入力をフェッチしようとし、その結果が正しいかのように結果を使用します。 –