优化C代码 - 防止多个文件打开

时间:2016-04-01 08:42:17

标签: c file optimization bison

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 / terminal中打印输出;然后我想启动解析器。问题很明显:每个打开过程都会花费资源,但是fread和fwrite的组合似乎“清理”了我的输入文件,因此yyparse没有得到任何进一步的输入并且基本上保持空白。

您是否知道如何在不打开2个文件的情况下使其更加高效或顺畅?

1 个答案:

答案 0 :(得分:8)

您可以使用rewind()再次返回文件的开头。有关详细信息,请参阅this documentation