|
setfilepointer 和setfilepointerex的读取字节的参数不能使用负整数吗,不知道这是什么错误,跪求
错误如图,所有代码贴在下面
#include<windows.h>
#include<tchar.h>
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPTSTR lpCmdLine, int nShowCmd)
{
HANDLE hfile = CreateFile(_T("E:\\VS2019\\项目程序\\Windows编程\\文件操作\\SetFilePointerEx\\1.txt"), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hfile == INVALID_HANDLE_VALUE)
{
MessageBox(NULL, _T("文件打开失败"), _T("tip"), MB_OK);
return -1;
}
DWORD dwfilesize = GetFileSize(hfile,NULL);
LARGE_INTEGER ldistance = { 0 };
ldistance.QuadPart = dwfilesize;
SetFilePointerEx(hfile, ldistance, NULL, FILE_BEGIN);
int num = 123;
DWORD dwrealwrite = 0;
BOOL bret = WriteFile(hfile, &num, sizeof(num), &dwrealwrite, NULL);
if (bret)
MessageBox(NULL, _T("写入成功"), _T("tip"), MB_OK);
else
MessageBox(NULL, _T("写入失败"), _T("tip"), MB_OK);
CloseHandle(hfile);
hfile = CreateFile(_T("E:\\VS2019\\项目程序\\Windows编程\\文件操作\\SetFilePointerEx\\1.txt"), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hfile == INVALID_HANDLE_VALUE)
{
MessageBox(NULL, _T("文件打开失败"), _T("tip"), MB_OK);
return -1;
}
int ret_num = 0;
DWORD dwrealread = 0;
LARGE_INTEGER ldistance2 = { 0 };
int movesize = sizeof(int) * -1;
ldistance2.QuadPart = movesize;
SetFilePointerEx(hfile, ldistance2, NULL, FILE_END);
bret = WriteFile(hfile, &ret_num, sizeof(ret_num), &dwrealread, NULL);
if (bret)
MessageBox(NULL, _T("读取成功"), _T("tip"), MB_OK);
else
MessageBox(NULL, _T("读取失败"), _T("tip"), MB_OK);
CloseHandle(hfile);
return 0;
}
补充:
C4308错误:负整型常量转换为无符号类型
一个负整型常数转换为无符号类型,从而导致一个可能无意义结果。
此处报错因为将 负整型常量-1隐式转换unsigned int类型。
触发隐式转换的原因为sizeof的返回值类型为无符号整型, 无符号整型和负整型常量相乘会触发隐式转换。
|
-
上一篇: 关于虚函数和多态性的问题下一篇: 要让文件夹以详细信息显示怎么写代码
|