c++ builder建立的工程下想同時打開64個檔案,簡單代碼 如下:
FILE * p[64] ;
int i ;
AnsiString str ;
for(i=0;i<64;i++)
{
str = IntToStr(i)+ ".txt" ;
if ((p[i] = fopen(str.c_str(), "wt"))
== NULL)
{
ShowMessage(str) ;
return ;
}
}
str = str + "完成" ;
ShowMessage(str) ;
發現 只能打開 47 個檔案 。
請問 各位大俠,這是在哪里給限制了?
可以去除這個限制嗎?
謝謝。
uj5u.com熱心網友回復:
可以逐個處理關閉檔案。uj5u.com熱心網友回復:
C++Builder中用fopen同時打開的檔案數量有上限,定義在_nfile.h中,默認為50#define _NFILE_ 50
除了每個行程默認的stdin, stdout, stderror三個檔案句柄,最多只能打開47個檔案。
uj5u.com熱心網友回復:
我在程式頭上添加了如下代碼:#include<_nfile.h>
#define _NFILE_ 70
結果出現如下錯誤:
W8017 Redefinition of '_NFILE_" is not idetical
不知是哪里出錯,如何能改變“同時打開檔案數量的上限”?
uj5u.com熱心網友回復:


不知是哪里出錯,如何能改變“同時打開檔案數量的上限”?
uj5u.com熱心網友回復:
undef試一下。字數字數uj5u.com熱心網友回復:
fopen是基礎C的函式,除了ccrun說的那個限制,估計還有在分配記憶體等方面的考慮。你可以換用FileCreate,FileOpen這樣的方法,肯定沒問題了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/20619.html
標籤:基礎類
下一篇:求一個C語言的解答
