![]() |
#2
rjsp2020-09-05 22:41
|
只有本站会员才能查看附件,请 登录
图片↑(滑稽.png)
我想实用ReadFile函数读取这个图片的所有内容,代码如下↓

#include<iostream>
#include<Windows.h>
int main()
{
HANDLE hFile = ::CreateFileA("C:\\Users\\CrezS\\Desktop\\滑稽.png", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
return 0;
unsigned long FileSize_Low, FileSize_High;
FileSize_Low = GetFileSize(hFile, &FileSize_High);
std::cout << hFile << std::endl;
std::cout << FileSize_Low << std::endl;
char* Buffer = new char[FileSize_Low];
int Read = ReadFile(hFile, Buffer, FileSize_Low, &FileSize_Low, NULL);
if (Read == 0)
return 0;
CloseHandle(hFile);
std::cout << strlen(Buffer);
}
#include<Windows.h>
int main()
{
HANDLE hFile = ::CreateFileA("C:\\Users\\CrezS\\Desktop\\滑稽.png", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
return 0;
unsigned long FileSize_Low, FileSize_High;
FileSize_Low = GetFileSize(hFile, &FileSize_High);
std::cout << hFile << std::endl;
std::cout << FileSize_Low << std::endl;
char* Buffer = new char[FileSize_Low];
int Read = ReadFile(hFile, Buffer, FileSize_Low, &FileSize_Low, NULL);
if (Read == 0)
return 0;
CloseHandle(hFile);
std::cout << strlen(Buffer);
}
第一处cout返回的是000000D4,应该是成功的~
第二处返回4911,是文件大小(图片30*30)
但第三处strlen返回的是8,怎么改都解决不了,请问是什么问题,谢谢各位大佬~
(PS:分数有限,谢谢~)
只有本站会员才能查看附件,请 登录
↑输出的内容,转换成整数确实是png的文件头一部分
[此贴子已经被作者于2020-9-5 16:04编辑过]