2016-04-01 10 views
2
yyin = fopen("input_file.txt","r"); 
while ((nread = fread(buf, 1, sizeof buf, yyin)) > 0){ 
    fwrite(buf, 1, nread, stdout); 
} 
fclose(yyin); 
yyin = fopen("input_file.txt","r"); 
yyparse(); 
fclose(yyin); 

ご覧のとおり、同じファイルを複数回開きます。最初に私はcmd /ターミナルで出力を出力したい。私はパーサーを始めたいと思う。問題は明らかです:各オープンプロセスはリソースを必要としますが、freadとfwriteの組み合わせは入力ファイルを "クリーン"にし、yyparseはそれ以上の入力を得られず、基本的に空のままです。Cコードの最適化 - 複数ファイルの開け防止

2つのファイルを開いた状態でこれをよりパフォーマンスに優れ、スムーズにする方法はありますか?

答えて

8

rewind()を使用すると、ファイルの先頭に戻ることができます。詳細については、this documentationを参照してください。

+0

パーフェクト!それはまさに私が探していたものです。どうもありがとうございました。 –