Question: For example, if I want to delete 10 bytes in the middle of file or add 10 bytes to the middle, are there anyway to do it without total file rewrite?

I'd like a solution that does this task the fastest.

I use C#, but the solution maybe be also in C or C++.

Answer: 
You have to copy the entire file, omitting or inserting the relevant bytes. This is an OS constraint; because of the way files are laid out on disk, it simply isn't possible to support this type of operation (at least with simple file systems like those used by Unix or Windows).
if you want to do at same place delete and add ==> modify/update 

open file in r+ mode this will give you change to read and write both operation can perform.
then 

move the file stream to where you want to modify and add that many bytes there 
you need not to delete 10 bytes. need to write 10 bytes. this will overwrite ten bytes from the current location. nothing but delete old ten bytes and add new ten bytes. 

if you want to delete and don't want to add any thing ,then copy to new file except that ten bytes. 

if you just want to add , move the stream position to end , write ten bytes. 

you need `fseek()`