I have a problem when copying binary files using fread
and fwrite
:
the loop runs only two times (40 bytes), but the file length is 160 bytes:
#include <string.h>
#define PER_READ 30
int main(void)
{
char buffer[500] = { 0 };
FILE* CSV = fopen( "CSV.csv", "rb" );
FILE* csvDest = fopen( "CSVDest.csv", "wb" );
unsigned int finished = 0;
unsigned int counter = 0;
do
{
finished = fread( buffer, sizeof( char*), PER_READ, CSV );//Read all from CSV to a string name buffer
finished += PER_READ * counter;
counter++;
} while (finished == PER_READ * counter);
fwrite( buffer, sizeof( char* ), finished, csvDest );// write all to a the file CSVDest
system( "PAUSE" );
return (0);
};
Your implementation could be a simple loop like this, which repeats until there were no bytes read. Note that
sizeof(char*)
is wrong - the size of a pointer, and thatsizeof(char)
is1
by definition.You do:
and then you compare:
while (finished == PER_READ * counter);
how do expect this to turn out?