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不会得到任何进一步的输入,并且基本上保持空白。
您是否知道如何在不打开2个文件的情况下提高性能或使效果更流畅?
最佳答案
您可以使用rewind()再次返回文件的开头。有关更多详细信息,请参见this documentation。