之前,从硬盘中读入文件的方法都是使用fscanf,一个数一个数的读。现在发现了一个快得太多的方法 - ReadFile(windows库函数)
TCHAR fname[1024]; //file's name
int i;
for(i=0; i<strlen(filename); i++) //format transformation
fname[i] = filename[i];
fname[i] = '\0';
//open & read file into buffer
HANDLE file = CreateFile( fname, GENERIC_READ, 0 , NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if( file == INVALID_HANDLE_VALUE )
{
printf("wrong!\n");
}
DWORD filesize=GetFileSize(file,NULL); //file's size
char* buffer=new char[filesize+1];
DWORD readsize;
ReadFile(file, buffer, filesize, &readsize, NULL); //read file into buffer
buffer[filesize] = 0;
CloseHandle(file);
利用ReadFile,将文件整块读入到内存buffer中。然后自己对buffer数组进行解析。
注意ReadFile的第四个参数,LPDWORD是指向一个DWORD的指针。