// Usage: copy A B // Create a copy of file A called B. #include <cstdio> using namespace std; //======================================================== // copy //======================================================== // copy(oldf,newf) copies all of file oldf into file newf. // // Requirement: oldf must have been opened for reading and // newf must have been opened for writing. // // Note: This function does not close oldf or newf. // It just does the copy. //======================================================== void copy(FILE* oldf, FILE* newf) { int c = getc(oldf); while(c != EOF) { putc(c, newf); c = getc(oldf); } } //======================================================== // main //======================================================== int main(int argc, char* argv[]) { if(argc == 3) { //--------------- // Open inf. //--------------- FILE* inf = fopen(argv[1], "r"); if(inf == NULL) { printf("Cannot open file %s for reading\n", argv[1]); return 1; } //--------------- // Open outf. //--------------- FILE* outf = fopen(argv[2], "w"); if(outf == NULL) { fclose(inf); printf("Cannot open file %s for writing\n", argv[2]); return 1; } //--------------- // Do the copy. //--------------- copy(inf, outf); fclose(inf); fclose(outf); return 0; } else // wrong number of command-line arguments { printf("usage: copy old new\n"); return 1; } }