createfile函数头文件再哪个头文件里面

如何得到一个DLL文件里的所有函数名_百度知道c语言程序设计文件操作方法示例(CreateFile和fopen)
字体:[ ] 类型:转载 时间:
c主要的文件操作函数有:CreateFile,CloseHandle,ReadFile,WriteFile,SetFilePointer,GetFileSize。其中的读写操作是以字符为单位,获得文件大小也是以字符为单位。
实例:(1)第一种方法CreateFile 代码如下:#include "stdafx.h"#include &windows.h&void main(int argc, char* argv[]){&&&&& HANDLE hDevice = CreateFile("C://S.txt",&&&&&&&&&&& GENERIC_READ|GENERIC_WRITE,&&&&&&&&&&& 0,&&&&&&&&&&& NULL,&&&&&&&&&&& OPEN_EXISTING,&&&&&&&&&&& FILE_ATTRIBUTE_NORMAL,&&&&&&&&&&& NULL);&&&&& if (hDevice == INVALID_HANDLE_VALUE)&&&&& {&&&&&&&&&&&& printf("Failed to obtain file with %d error code !/n",GetLastError());&&&&&&&&&&&&&&&&& }&&&&& DWORD dwSize = GetFileSize(hDevice,NULL);&&&&& printf("%d /n",dwSize);
&&&&& char chBuffer[10] = "5469";&&&&& DWORD dwWriteSize = 0;&&&&& BOOL bRet = WriteFile(hDevice,chBuffer,4,&dwWriteSize,NULL);&&&&& if(bRet)&&&&& {&&&&&&&&&&&& printf("write file success /n");&&&&& }&&&&& FlushFileBuffers(hDevice);&& //将缓冲区数据写入磁盘&&&&& LONG IDistance = 0;&&&&& DWORD dwPtr = SetFilePointer(hDevice,IDistance,NULL,FILE_BEGIN);& //调整文件指针到文件开头&&&&& DWORD dwReadSize = 0;&&&&& bRet = ReadFile(hDevice,chBuffer,10,&dwReadSize,NULL);&&&&& if (bRet)&&&&& {&&&&&&&&&&&&& printf("chbuffer is %s /n",chBuffer);&&&&& }&&&&& CloseHandle(hDevice);&&&&&}
(2)第二种方法流文件操作FILE
代码如下:&&&&& char datain[101];&&&&& FILE *fp_&&&&& fp_sys = fopen("要打开的文件名", "rb"); //第二个参数为打开方法,r代表读,b代表二进制方式&&&&& if(fp_sys == NULL) {&&&&&&&&&&&& AfxMessageBox("无法打开充值卡文件");
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具c语言createfile函数用法_百度知道5538人阅读
c++/MFC(2)
1. 创建和打开文件
创建任何一种文件只需要用到API函数CreateFile,应用程序可以通过该函数指定文件的格式为读取、写入或两者皆可,也可以指定是否为共享文件。如果该文件名已经存在,则将其打开。下面对函数CreateFile进行详细的介绍:
说明:本函数用于创建一个指定类列的文件。
原型 :HANDLE CreateFile(LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes
DWORD dwCreationDisposition
DWORD dwFlagsAndAttributes
HANDLE hTemplateFile);
参数:lpFileName:是以空值结尾的字符串的指针,包含要创建、打开或截取的文件、管道、通信资源、磁盘设备或控制台的名称。
dwDesAccess:指定文件的输出类型。
dwShareMode:确定是否且如何共享这个文件。
lpSecurityAttributes:是指向SECURITY_ATTRIBUTES结构的指针,指定了目录的安全属性,但要求文件系统支持如NTFS的格式。Windows 98不支持此属性,在函数调用时应设置为NULL。
dwCreationDisposition:确定文件存在或不存在时所采取的动作。
dwFlagsAndAttributes:指定文件的属性和标志。
hTemplateFile:用于存取模板文件的句柄,模板文件为正在创建的文件提供扩展属性。
返回值
如果函数调用成功则返回打开文件的句柄。如果调用前文件已经存在,且
dwCreationDisposition参数使用CREATE_ALWAYS或OPEN_ALWAYS,
则返回ERROR_ALREADY_EXISTS。函数调用失败则返回INVALID_HANDLE_VALUE。
例如,创建一个在C:目录下名为&FILE.DOC&(Word文档)的文件的代码如下,其中hFile为HANDLE类型。
hFile=CreateFile(&C:\\FILE.DOC&,GENERIC_READ|GENERIC_WRITE.C,
NULL,OPEN_ALWAYS,FILE_ATTRISUTE_NORMAL,NULL);
2. 读取、写入和删除文件
在第一次打开文件时,Windows在文件的开头存放一个文件指针,文件指针所指的位置就是下一次读取或写入的地方。随着字节的读取或写入,Windows也相应增加文件指针。应用程序可以利用函数SetFilePointer来移动文件指针的位置。
执行读取和写入的函数是ReadFile和WriteFile。这两个函数在文件指针位置处读取和写入指定数量的字节数,并不进行格式化数据。下面对这两个函数分别进行介绍。
1)ReadFile
说明:从文件指针位置处读取指定数量的字节数。
原型: BOOL ReadFile(HANDLE hFile, //文件指针
LPVOID lpBuffer, //数据缓冲
DWORD nNumberOfBytesToRead, //读取的字节数
LPDWORD lpNumberOfBytesRead, //接收要读取的字节数
LPOVERLAPPED lpOverlapped //覆盖缓冲)
参数 hFile: 是指向要打开文件的指针。
lpBuffer: 是接收来自文件数据缓冲区的指针。
nNumberOfBytesToRead: 指从文件中读取的字节数。
lpNumberOfBytesRead: 用于接收要读取的字节数。
lpOverlapped: 是指向OVERLAPPED结构的指针,如果hFile所指向的文件是用FILE_FLAG_OVERLAPPED创建的,则需要用到此结构。
返回值:如果函数调用成功则返回值为TRUE,否则为FALSE。
2)WriteFile
说明:此函数是用来向文件指针位置处写入指定数量的字节数。
BOOL WriteFile (HANDLE hFile,
LPCVOID lpBuffer,
DWORD nNumberOfBytesToWrite,
LPDWORD lpNumberOfBytesWritten,
LPOVERLAPPED lpOverlapped);
其参数设置与读取文件函数ReadFile大同小异,只需要将读取改成写入即可,返回值也很相似,在这里就不多介绍了。
3) DeleteFile
说明:此函数用来删除一个已存在并指定路径的文件。
原型: BOOL DeleteFile(LPCTSTR lpFileName);
参数:lpFileName是一个指向字符串的指针,字符串中存储的是包含有具体路径的文件名。
返回值:如果函数调用成功则返回TRUE,否则返回FALSE。
4) CloseHandle
说明:此函数用于关闭目前打开的对象句柄
原型:BOOL CloseHandle(HANDLE hObject);
参数: hObject为对象的句柄。
返回值: 如果函数调用成功则返回TRUE,否则返回FALSE。
“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“
读写文件是每个Windows软件开发人员都需要做的工作。可见这项工作是非常重要的,毕竟各种各样的数据都需要保存起来,以便作各种各样的分析,或者通过网络传送给别人。像大家用BT下载的电影,在那个BT软件里,就需要不断从网络里接收到数据,然后再把这些数据保存到文件里合适的位置,就可以生成跟发行者那里一样的文件,这样才可以播放出来。又比如我在玩《征途》的游戏里,刚刚打开游戏时,它就不断从服务器上下载更新的文件下来,然后保存到硬盘。WriteFile函数是用来写数据到文件,ReadFile函数是从文件里读取数据出来。但这两个函数不但可以读取写磁盘的文件,也可以接收和发送网络的数据,还有读写串口、USB、并口等设备的数据。在读写文件里,首先就是先打开文件,然后判断打开是否成功。在写文件时,同时要注意磁盘的空间是否满等问题。在读取文件时,往往需要读取不同位置的文件,比如要读取一个4G的视频文件,就不可能完全把它读取到内存里,因此就需要对文件进行定位读取。
函数WriteFile和ReadFile声明如下:
WINBASEAPI
WriteFile(
&&& __in&&&&&&& HANDLE hFile,
&&& __in_bcount(nNumberOfBytesToWrite) LPCVOID lpBuffer,
&&& __in&&&&&&& DWORD nNumberOfBytesToWrite,
&&& __out_opt&& LPDWORD lpNumberOfBytesWritten,
&&& __inout_opt LPOVERLAPPED lpOverlapped
WINBASEAPI
&&& __in&&&&&&& HANDLE hFile,
&&& __out_bcount_part(nNumberOfBytesToRead, *lpNumberOfBytesRead) LPVOID lpBuffer,
&&& __in&&&&&&& DWORD nNumberOfBytesToRead,
&&& __out_opt&& LPDWORD lpNumberOfBytesRead,
&&& __inout_opt LPOVERLAPPED lpOverlapped
hFile是文件句柄。
lpBuffer是读写数据缓冲区。
nNumberOfBytesToWrite是多少数据要写入。
lpNumberOfBytesWritten是已经写入多少数据。
nNumberOfBytesToRead是多少数据要读取。
nNumberOfBytesToRead是已经读取多少数据。
lpOverlapped是异步读写的结构。
调用函数的例子如下:
//创建、写入、读取文件。
QQ:9073204 深圳
void CreateFileDemo(void)
&&&&&&&& //
&&&&&&&& HANDLE hFile = ::CreateFile(_T(&CreateFileDemo.txt&),&&&& //创建文件的名称。
&&&&&&&&&&&&&& GENERIC_WRITE|GENERIC_READ,&&&&&&&&& // 写和读文件。
&&&&&&&&&&&&&& 0,&&&&&&&&&&&&&&&&&&&&& // 不共享读写。
&&&&&&&&&&&&&& NULL,&&&&&&&&&&&&&&&&&& // 缺省安全属性。
&&&&&&&&&&&&&& CREATE_ALWAYS,&&&&&&&&& // 如果文件存在,也创建。
&&&&&&&&&&&&&& FILE_ATTRIBUTE_NORMAL, // 一般的文件。&&&&&&&
&&&&&&&&&&&&&& NULL);&&&&&&&&&&&&&&&& // 模板文件为空。
&&&&&&&& if (hFile == INVALID_HANDLE_VALUE)
&&&&&&&& {
&&&&&&&&&&&&&& //
&&&&&&&&&&&&&& OutputDebugString(_T(&CreateFile fail!\r\n&));
&&&&&&&& }
&&&&&&&& //往文件里写数据。
&&&&&&&& const int BUFSIZE = 4096;
&&&&&&&& char chBuffer[BUFSIZE];&&&&&&&&&&
&&&&&&&& memcpy(chBuffer,&Test&,4);
&&&&&&&& DWORD dwWritenSize = 0;
&&&&&&& BOOL bRet = ::WriteFile(hFile,chBuffer,4,&dwWritenSize,NULL);
&&&&&&&& if (bRet)
&&&&&&&& {
&&&&&&&&&&&&&& //
&&&&&&&&&&&&&& OutputDebugString(_T(&WriteFile 写文件成功\r\n&));
&&&&&&&& }
&&&&&&&& //先把写文件缓冲区的数据强制写入磁盘。
&&&&&&&& FlushFileBuffers(hFile);
&&&&&&&& //
&&&&&&&& //从文件里读取数据。
&&&&&&&& LONG lDistance = 0;
&&&&&&&& DWORD dwPtr = SetFilePointer(hFile, lDistance, NULL, FILE_BEGIN);
&&&&&&&& if (dwPtr == INVALID_SET_FILE_POINTER)
&&&&&&&& {
&&&&&&&&&&&&&& //获取出错码。
&&&&&&&&&&&&&& DWORD dwError = GetLastError() ;
&&&&&&&&&&&&&& //处理出错。&&&&&&&&&&&&
&&&&&&&& }
&&&&&&&& DWORD dwReadSize = 0;
&&&&&&& bRet = ::ReadFile(hFile,chBuffer,4,&dwReadSize,NULL);
&&&&&&&& if (bRet)
&&&&&&&& {
&&&&&&&&&&&&&& //
&&&&&&&&&&&&&& OutputDebugString(_T(&ReadFile 读文件成功\r\n&));
&&&&&&&& }
&&&&&&&& else
&&&&&&&& {
&&&&&&&&&&&&&& //获取出错码。
&&&&&&&&&&&&&& DWORD dwError = GetLastError();
&&&&&&&&&&&&&& //处理出错。&&&&&&&&&&&&
&&&&&&&&&&&&&& TCHAR chErrorBuf[1024];
&&&&&&&&&&&&&& wsprintf(chErrorBuf,_T(&GetLastError()=%d\r\n&),dwError);
&&&&&&&&&&&&&& OutputDebugString(chErrorBuf);
&&&&&&&& }
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:55635次
排名:千里之外
转载:14篇

我要回帖

更多关于 abs函数 哪个头文件 的文章

 

随机推荐