#include #include #include int cpm(char* src, char* dst, int n, int buff_size) { FILE* fp_in = fopen(src, "r"); FILE* fp_out = fopen(dst, "w"); char buffer[buff_size]; for (int i=0; i < n; i++) { fseek(fp_in, 0, SEEK_SET); while (fgets(buffer, buff_size-1, fp_in)) { fputs(buffer, fp_out); fseek(fp_out, -1, SEEK_CUR); } } fclose(fp_in); fclose(fp_out); return 0; } int main(int argc, char* argv[]) { char* src = NULL; char* dst = NULL; int n = 1; int buff_size = 16; for (int i=1; i < argc; i++) { if (!strcmp(argv[i], "-s")) { src = argv[i+1]; i++; } else if (!strcmp(argv[i], "-d")) { dst = argv[i+1]; i++; } else if (!strcmp(argv[i], "-n")) { n = atoi(argv[i+1]); i++; } else if (!strcmp(argv[i], "-b")) { buff_size = atoi(argv[i+1]); i++; } else { printf("Unknown option %s\n", argv[i]); } } if (!src || !dst) { printf("Usage: %s -s -d -n -b \n", argv[0]); return 1; } return cpm(src, dst, n, buff_size); }