How to change characters in a text file using C's mmap()?

Viewed 4435

Let's say I have the standard "Hello, World! \n" saved to a text file called hello.txt. If I want to change the 'H' to a 'R' or something, can I achieve this with mmap()?

2 Answers

Here's a working example.

    #include <stdio.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <sys/mman.h>

    int main(){
       int myFile = open("hello.txt", O_RDWR);
       if(myFile < 0){
           printf("open error\n");
       }
       struct stat myStat = {};
       if (fstat(myFile, &myStat)){
           printf("fstat error\n");
       }

       off_t size = myStat.st_size;
       char *addr;
       addr = mmap(NULL, size, PROT_READ|PROT_WRITE, MAP_SHARED, myFile, 0);
       if (addr == MAP_FAILED){
           printf("mmap error\n");
       }
       if (addr[0] != 'H'){
           printf("Error: first char in file not H");
       }
       addr[0] = 'J';
       return 0;
   } 
Related