
Respuesta :
Answer:
Check the explanation
Explanation:
#include <stdio.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
extern int errno;
struct stat st;
int main(int argc, char **argv){
 int num1 = atoi(argv[1]); // Getting num1 from user
 int num2 = atoi(argv[2]); // Getting num2 from user
 char *fileSource = argv[3];
 char *fileTarget = argv[4];
Â
 int source_fd = open(fileSource, O_RDONLY); // opening the file in read only mode
 int target_fd = open(fileTarget, O_WRONLY | O_CREAT); // opening the target file in Writeonly mode if file is not found it will create
 Â
 char *ch = (char *) calloc(num2+num1, sizeof(char));
Â
 stat(fileSource, &st);
 if(st.st_size < (num1 + num2)){
   printf("File Size is smaller than the specified bytes\n");
   read(source_fd, ch, st.st_size); // reading the file upto the end
   write(target_fd, ch, st.st_size); // write to the file
   write(target_fd, ch, st.st_size); // two times writing to the file
 }else{
   if(lseek(source_fd, (off_t)num1, SEEK_SET) < 0 ) // moving the cursor to after the specified bytes from the start
   {
     printf("Some Error occured while seeking the file");
     return -1;
   }
   read(source_fd, ch, num2); // reading num2 bytes from the source
   write(target_fd, ch, num2); // writing two times to the target
   write(target_fd, ch, num2);
  Â
 }
Â
 return 0;
Â
}
1 2 #include <stdio.h> #include <sys/stat.h> #include <stdlib.h> #include <fcntl.h> #include <errno.h> #include <unistd.h> 4
The code screenshot and code output are attached below.


