① 用CreateFile()打開的文件,怎麼判斷讀寫位置是否已經是末尾
你是因為Create的時候帶有OPEN_ALWAYS參數吧。
這時候末尾寫文件不需要做判斷,直接
fseek(stream,SEEK_END);//FileSeek
跳轉到末尾寫就可以了。
② C語言創建文件,文件名可以用變數么
C語言中windows環境下,至少有三種方式可以創建文件,文件名都可以使用變數。
常用的函數中,無論是fopen還是CreateFile,其參數都可以使用變數來作為文件名來創建文件和讀寫文件。
③ BCB中CreateFile該怎麼用
C++ Builder 中 CreateFile的用法 (例子在最後)
(1)函數原型
HANDLE CreateFile(
LPCTSTR lpfileName,
DWORD deDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes
DWORD dwCreationDesposition,
DWORD dwFlagsAndAtrributes,
HANDLE hTemplateFile
);
(2)函數說明
該函數創建、打開或截斷一個文件,並返回一個能夠被用來存取該文件的句柄。此句柄允許讀書據、寫數據以及移動文件的指針。CreateFile函數既可以做為一個寬自負函數使用,也可以作為一個ANSI函數來用。
(3)參數說明
lpFileName:指向文件字元串的指針。
dwDesireAccess:制定文件的存取模式,可以取下列值:
0:制定可以查詢對象。
GENERIC_READ:指定可以從文件中度去數據。
GENERIC_WRITE:指定可以向文件中寫數據。
dwShareMode:指定文件的共享模式,可以取下列值:
0:不共享。
FILE_SHARE_DELETE:在Windows NT系統中,只有為了刪除文件而進行的打開操作才會成功。
FILE_SHARE_READ:只有為了從文件中度去數據而進行的打開操作才會成功。
FILE_SHARE_WRITE:只有為了向文件中寫數據而進行的打開操作才會成功。
lpSecurityAttributes:指定文件的安全屬性。
dwCreationDisopsition:指定創建文件的方式,可以取以下值:
CREATE_NEW:創建新文件,如果文件已存在,則函數失敗。
CREATE_ALWAYS:創建愛內心文件,如果文件已存在,則函數將覆蓋並清除舊文件。
OPEN_EXISTING:打開文件,如果文件不存在,函數將失敗。
OPEN_ALWAYS:打開文件,如果文件不存在,則函數將創建一個新文件。
TRUNCATE_EXISTING:打開外呢間,如果文件存在,函數將文件的大小設為零,如果文件不存在,函數將失敗返回。
dwFlagsAndAtrributes:指定新建文件的屬性和標志,它可以取以下值:
FILE_ATTRIBUTE_ARCHIVE:歸檔屬性。
FILE_ATTRIBUTE_HIDDEN:隱藏屬性。
FILE_ATTRIBUTE_NORMAL:正常屬性。
FILE_ATTRIBUTE_READONLY:只讀屬性。
FILE_ATTRIBUTE_SYSTEM:系統文件。
FILE_ATTRIBUTE_TEMPORARY:臨時存儲文件,系統總是將臨時文件的所有數據讀入內存中,以加速對該文件的訪問速度。用戶應該盡快刪除不再使用的臨時文件。
FILE_FLAG_OVERLAPPED:用戶可以通過一個OVERLAPPED結構變數來保存和設置文件讀寫指針,從而可以完成重疊式的讀和寫。一般用於數量比較大的讀些操作。
hTemplateFile:指向一個具有GENERIC_READ屬性的文件的句柄,該文件為要創建的文件提供文件屬性和文件擴展屬性。
(4)注意事項
函數成功將返回指定文件的句柄,否則返回NULL。
(5)典型示例:
...
char szFile[64];
HANDLE handle;
unsigned long lWritten,lRead;
handle = CreateFile("c:\\windows\\desktop\\example.txt",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
if(handle==INVALID_HANDLE_VALUE){
MessageBox(NULL,"Error Create File!","Error",MB_OK);
break;
}else
MessageBox(NULL,"Open file Success!","Open file",MB_OK);