ファイルAの行をループするときに、行を解析し、各文字列(char*)を。に入れchar**ます。
行の終わりで、ファイルBを開き、を使用して、そのファイルから文字を取得する手順を実行しfgetsます。次に、ファイルBを閉じます。fseekfgetc
行ごとにファイルBの再オープンと再クローズを繰り返します。
私が知りたいのは:
を使用することでパフォーマンスが大幅に低下するため、動的ではなく静的なものを使用する必要があります
mallocか?freemyArray[NUM_STRINGS][MAX_STRING_WIDTH]char** myArrayファイルBを開いたり閉じたりすることによるパフォーマンスのオーバーヘッドはかなりありますか(概念的には、何千回も)?ファイルAがソートされている場合、
fseekファイルBで「後方」に移動し、ファイルBで以前に配置されていた場所をリセットする方法はありますか?
編集2つのアプローチにより、実行時間が大幅に短縮されたことがわかりました。
私のファイルBは実際には24個のファイルの1つです。同じファイルB1を1000回開き、次にB2を1000回開くのではなく、ファイルB1を1回開き、閉じ、B2を1回、閉じるなどします。これにより、数千回の
fopen操作fcloseが約24回に減ります。以前
rewind()はファイルポインタをリセットしていました。
これにより、速度が約60倍向上しましたが、これで十分です。を指摘していただきありがとうございますrewind()。