2016-04-01 19 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); 

Gördüğünüz gibi, aynı dosyayı birden çok kez açıyorum. Önce çıkışı cmd/terminalimde yazdırmak istiyorum; sonra ayrıştırıcıyı başlatmak istiyorum. Sorun açık: Her açılış süreci kaynakları harcıyor, ancak fread ve fwrite kombinasyonu, yyparse'ın daha fazla girdi almaması ve temelde boş kalması için giriş dosyamın “temiz” gibi görünüyor.C kodunun optimizasyonu - çoklu dosya açıklıklarını önleme

2 dosya açılışıyla daha fazla performans veya pürüzsüz yapmanın nasıl bir fikri var?

cevap

8

Dosyanın başına dönmek için geri sarma() kullanabilirsiniz. Daha fazla ayrıntı için bkz. this documentation.

+0

Mükemmel! Tam olarak aradığım şey bu. Çok teşekkür ederim. –