1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<Windows.h> 4 5 char path[256] = "kaifang.txt"; 6 7 void main() 8 { 9 //路径,读写, 10 HANDLE hfile = CreateFileA(path, GENERIC_READ | GENERIC_WRITE, 0, NULL, 11 OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);//打开一个文件 12 13 //如果打开失败 14 if (hfile ==INVALID_HANDLE_VALUE) 15 { 16 printf("打开文件失败"); 17 system("pause"); 18 } 19 //获取文件大小 20 printf(" %d", GetFileSize(hfile,NULL)); 21 //创建映射 22 HANDLE hmap = CreateFileMappingA(hfile, 23 NULL, PAGE_READWRITE | SEC_COMMIT,//读写 24 0, 25 GetFileSize(hfile, NULL) + 1,//文件大小多一位 26 NULL); 27 //判断是否映射失败 28 if (hmap==NULL) 29 { 30 printf("映射失败"); 31 CloseHandle(hfile); 32 system("pause"); 33 } 34 //创建一个指针,存储映射以后的首地址 35 PVOID pvfile = MapViewOfFile(hmap, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0); 36 37 if (pvfile==NULL) 38 { 39 printf("指针映射失败"); 40 CloseHandle(hfile); 41 CloseHandle(hmap); 42 system("pause"); 43 44 } 45 46 puts("映射成功"); 47 char *pstart = pvfile;//首地址 48 char *pend = pstart + GetFileSize(hfile, NULL);//结束地址 49 system("pause"); 50 51 char str[100] = "test test"; 52 memcpy(pend, str, strlen(str)); 53 54 55 system("pause"); 56 UnmapViewOfFile(pvfile);//解除映射 57 CloseHandle(hmap); 58 system("pause"); 59 60 }