I am trying to open it as "read-only". ie. "r" in fopen() and GENERIC_READ, FILE_SHARE_READ in create file
Clearly the file is not locked from reading, otherwise the more command could not have worked. So the process did specify read sharing when it created the file. The mistake is only specifying FILE_SHARE_READ in your own attempt to open the file. That denies write sharing. That cannot work, the process has already acquired write access to the file, you cannot deny it. Instead you'll be denied access with the sharing violation. You must also specify FILE_SHARE_WRITE to gain access to the file.
That will fix your problem. Only other wrinkle is that you'll be reading from a file that's being written to. So data in the file changes entirely unpredictably.