有时候我们要修改文本文件的内容。由于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