① 用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);