title: C++ fwrite() writes more than expected
body: <p>I have problem when copying files</p>
  
  <p>code:</p>
  
  <pre><code>    bool done;
      FILE* fin;
      FILE* fout;
      const int bs = 1024*64;//64 kb
      char* buffer[bs];
      int er, ew, br, bw;
      long long int size = 0;
      long long int sizew = 0;
      er = fopen_s(&amp;fin,s.c_str(),"rb");
      ew = fopen_s(&amp;fout,s2.c_str(),"wb");
      if(er == 0 &amp;&amp; ew == 0){
          while(br = fread(buffer,1,bs,fin)){
              size += br;
              sizew += fwrite(buffer,1,bs,fout);
          }
          done = true;
      }else{
          done = false;
      }
      if(fin != NULL)fclose(fin);
      if(fout != NULL)fclose(fout);
  </code></pre>
  
  <p>Somehow fwrite writes whole buffer ignoring count value (br)</p>
  
  <p>Some examples how:</p>
  
  <pre><code>Copying 595 file of 635 DONE. 524288/524288 B
  Copying 596 file of 635 DONE. 524288/524288 B
  Copying 597 file of 635 DONE. 65536/145 B
  Copying 598 file of 635 DONE. 65536/16384 B
  Copying 599 file of 635 DONE. 65536/145 B
  Copying 600 file of 635 DONE. 65536/67 B
  Copying 601 file of 635 DONE. 65536/32768 B
  Copying 602 file of 635 DONE. 65536/67 B
  </code></pre>
  
  <p>Anyone knows where is the problem?</p>