You cannot fwrite open a file in rb mode.
Your statement that ret always zero is false. If you correctly measured your code, you will not make false statements:
#include <stdio.h> #include <stdlib.h> int main() { FILE *file = fopen("junk.dat", "rb"); if(file!=NULL) { char aByte[50000]; int ret = fread(aByte, sizeof(aByte), 1, file); fprintf(stderr, "fread returned %d\n", ret); if(ret != 0) { int fs = fseek(file, 0, SEEK_SET); if(fs == -1) { perror("fseek"); exit(1); } fs = fwrite(aByte, ret, 1, file); if(fs != ret) { perror("fwrite"); exit(1); } } } fclose(file); return 0; }
Productivity:
fread returned 1 fwrite: Bad file descriptor
at startup.
source share