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

Kar*_*jic 2 c optimization file 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);
Run Code Online (Sandbox Code Playgroud)

如您所见,我多次打开同一个文件.首先,我想在我的cmd/terminal中打印输出; 然后我想启动解析器.问题很明显:每个打开过程都会花费资源,但是fread和fwrite的组合似乎"清理"了我的输入文件,因此yyparse没有得到任何进一步的输入并且基本上保持空白.

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

Hen*_*son 8

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