c/c++ 通过 内存映射 方法同步修改文件内容
来源:互联网 发布:mysql in和and 编辑:程序博客网 时间:2024/06/06 03:24
有时候我们要修改文本文件的内容。由于c语言没有直接修改文本内容的函数。一种方法是创建一个新的txt,读取原来的txt文件,然后把需要的文本写到第二个txt文件中,这种方法并不是很理想。而且很不容易控制。幸好的是c语言有一个mmap函数供我们直接将txt存入内存,并且在内存中修改同步到本地磁盘文件。
这是我的txt(test.txt)
000000001111000000
我们要把里面的0全部换成1。源代码为
#include <stdio.h>#include <unistd.h>#include <sys/stat.h>#include <sys/mman.h>#include <fcntl.h>int main(int argc, const char * argv[]){ int fd; unsigned char *start; struct stat sb; fd = open("test.txt", O_RDWR); fstat(fd, &sb); /* 取得文件大小 */ start = (unsigned char *)mmap(NULL, sb.st_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); if(start == MAP_FAILED) /* 判断是否映射成功 */ { printf("映射失败,文件过大或者没有权限"); return 1; } printf("%s", start); unsigned long i = 0; while (i < sb.st_size) { if('0' == *(start + i)) { *(start + i) = '1'; } i++; } close(fd); munmap(start, sb.st_size); /* 解除映射 */ return 0;}
这时我们重新打开test.txt发现
里面全是1.成功!!!!!!!
0 0
- c/c++ 通过 内存映射 方法同步修改文件内容
- linux c 通过内存映射,操作文件
- C修改文件内容
- Linux C 文件内存映射
- C语言修改文件中一部分内容
- C语言 修改文件 一部分内容
- git for c#,文件修改内容
- 通过文件映射共享内存
- 关于mmap内存映射的修改同步
- 内存映射修改大文件
- 内存映射修改大文件
- 内存映射修改大文件
- 内存映射修改大文件
- 内存映射修改大文件
- linux下c通过虚拟地址映射读写文件
- 动态映射objective-c的对象方法修改空指针
- C语言 文件映射
- 用C语言读取大文件的问题 内存映射
- .Net可以做什么
- Cygwin Application initialization failed: no display name and no $DISPLAY environment
- 爱上生话
- Crazy2048
- HashMap的映射实现
- c/c++ 通过 内存映射 方法同步修改文件内容
- 替代资源的优先级别
- 游戏云间之一:弹性扩展
- 查看数据库死锁,并查看死锁SQL,杀死死锁进程
- 本地C++与托管C++以及Win32控制台与CLR控制台的关联
- 蓝桥杯 n进制小数
- C#属性和字段
- C#的base64编码、解码函数
- 音量图标不显示了怎么恢复