#include #include int main(int argc, char *argv[]) { FILE *fpsrc, *fpdst; void *buf; int rcount, wcount; if (argc != 3) { printf("Usage: %s src_file dst_file\n", argv[0]); exit(1); } fpsrc = fopen(argv[1], "r"); if (fpsrc == NULL) { perror(argv[1]); exit(1); } fpdst = fopen(argv[2], "w"); if (fpdst == NULL) { perror(argv[2]); fclose(fpsrc); exit(1); } #if 0 buf = malloc(BUFSIZ); if (buf == NULL) { perror("malloc"); fclose(fpdst); fclose(fpsrc); exit(1); } #endif while (!feof(fpsrc)) { rcount = fread(buf, 1, BUFSIZ, fpsrc); if (rcount < 1) { if (ferror(fpsrc)) { perror("fread"); fclose(fpdst); fclose(fpsrc); exit(1); } else if (feof(fpsrc)) { break; } } wcount = fwrite(buf, 1, rcount, fpdst); if (wcount < 1) { if (ferror(fpdst)) { perror("fwrite"); fprintf(stderr, "tried to write %d bytes, but only %d bytes were written.\n", rcount, wcount); fclose(fpdst); fclose(fpsrc); exit(1); } } } fclose(fpdst); fclose(fpsrc); return 0; }