Win32文件操作

①打开文件的示例代码:

HANDLE hSrcFile = CreateFile(TEXT("main.cpp"), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
	if (hSrcFile==INVALID_HANDLE_VALUE)
	{
		printf("打开文件失败\n");
		return 0;
	}

	//以写方式打开文件,写的时候文件不能共享。若文件不存在则创建
	HANDLE hDestFile = CreateFile(TEXT("main.cpp.bak"), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
	if (hDestFile == INVALID_HANDLE_VALUE)
	{
		printf("打开文件失败\n");
		return 0;
	}

②对于普通文件(非串口或其他设备),ReadFile同步读时会立即返回,并不会等待直到读取指定数量的字节数才返回,因此可以循环读大文件,通过判断实际读取的字节数来判断文件是否被读完。
③Windows记事本的ANSI格式是可变字符集,对于ASCII码采用1个字节存放,对于中文字符采用两个字节存放,没有BOM头。对于Windows的Unicode编码,采用的是小端字节序,每个字符用两个字节存放,有BOM头,BOM头占两个字节,这两个字节构成的16位数为0xFEFF。正常UTF-8编码的二进制是没有BOM标识的,而Windows上的UTF-8编码的文件有UTF-8 BOM标识(EF BB BF)。
④lstrlen,lstrcpy,lstrcat, wsprintf 等是Windows的字符串处理函数。
⑤Intel处理器是小端存储的。如0x1234这样一个16位的数,在内存中存放的顺序是:
(地址低端)0x34,0x12(地址高端)
即小端存储方式为:内存低地址存放数据的低位。

猜你喜欢

转载自blog.csdn.net/csdn_gddf102384398/article/details/83339424
今日推荐