Note that there are some explanatory texts on larger screens.

plurals
  1. POHow do I overwrite a single byte in a binary file using fseek() and fwrite()?
    primarykey
    data
    text
    <p>I am trying to overwrite a single byte in a binary file. I am using <code>fseek()</code> to set the stream position indicator to the byte that I want to overwrite. Then I am calling to <code>fwrite()</code> with a new byte in that location. Somehow the other bytes in the file are being affected. Heres some code:</p> <pre><code>bool x = 1; bool y = 0; bool z = 1; /* WRITE 101 to file */ FILE *ff = fopen(file, "wb"); fwrite(&amp;x, sizeof(x), 1, ff); fwrite(&amp;y, sizeof(y), 1, ff); fwrite(&amp;z, sizeof(y), 1, ff); fclose(ff); bool x_r, y_r, z_r; /* READ from file */ ff = fopen(file, "rb"); fread(&amp;x_r, sizeof(x_r), 1, ff); fread(&amp;y_r, sizeof(y_r), 1, ff); fread(&amp;z_r, sizeof(z_r), 1, ff); fclose(ff); /* PRINT to standard output */ cout &lt;&lt; x_r &lt;&lt; y_r &lt;&lt; z_r &lt;&lt; endl; // OUTPUT: 101 bool overwrite = 1; /* OVERWRITE */ ff = fopen(file, "wb"); fseek(ff, 1, SEEK_SET); fwrite(&amp;overwrite, sizeof(overwrite),1 , ff); fclose(ff); /* READ from file */ ff = fopen(file, "rb"); fread(&amp;x_r, sizeof(x_r), 1, ff); fread(&amp;y_r, sizeof(y_r), 1, ff); fread(&amp;z_r, sizeof(z_r), 1, ff); fclose(ff); /* PRINT to standard output */ cout &lt;&lt; x_r &lt;&lt; y_r &lt;&lt; z_r &lt;&lt; endl; // OUPUT 011; I was expecting 111 </code></pre> <p>The above code basically writes three bytes of data to a file. 101. Then I use fseek() to set to reposition the stream indicator to point to the second byte. But calling fwrite() to overwrite the second byte from 0 to 1 is changing the first byte as well. The expected output is 111, but I am getting 011.</p> <p>Any ideas why this is happening? I tried putc as well, but that didn't work out either. Any help would be appreciated.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload