Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Hi I\'m doing a C programming assignment on Ubuntu server. The goal is to write

ID: 3704166 • Letter: H

Question

Hi I'm doing a C programming assignment on Ubuntu server. The goal is to write a program that copies the contents of a file exactly.

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

int error(char* msg)
{
    perror(msg);
    return 2;
}

int usage(char* name)
{
    printf("Usage: %s <file to copy> <name of copy> ", name);
    return 1;
}
int main(int argc, char* argv[])
{
    if (argc != 3)
        return usage(argv[0]);
  
    // open files
    // read bytes from original file and
    // write to copy
    FILE *fr = fopen(argv[1], "r");
    if(!fr) {
        error("file to copy does not exists");
    } else {
        FILE *temp = fopen(argv[2], "r");
        if(temp) {
            error("name of copy already exists");
        } else {
            fclose(temp);
            FILE *fw = fopen(argv[2], "w");
            if(fw) {
                char ch = 0;
                while((ch = getc(fr)) != EOF) {
                    putc(ch, fw);
                }
                fclose(fw);
            } else {
                error("can not write to name of copy");
            }
        }
        fclose(fr);
    }
  
  
    // close files
    return 0;
}

1. The usage of mycopy is as follows: mycopy 2. If the file to be copied does not exist or the user lacks permission to read it, mycopy emits an error message and quits 3. If a file or directory already exists with the name proposed for the copy, mycopy emits an error and terminates. 4. You are to write code within the main function of the file mycopy.c, which is supplied with this assignment. thoupid with tnis asgsment. You may also add your own functions, if you wish.

Explanation / Answer

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

int error(char* msg)
{
    perror(msg);
    return 2;
}

int usage(char* name)
{
    printf("Usage: %s <file to copy> <name of copy> ", name);
    return 1;
}
int main(int argc, char* argv[])
{
    if (argc != 3)
        return usage(argv[0]);
  
    // open files
    // read bytes from original file and
    // write to copy
    FILE *fr = fopen(argv[1], "r");
    if(!fr) {
        error("file to copy does not exists");
    } else {
        FILE *temp = fopen(argv[2], "r");
        if(temp) {
            error("name of copy already exists");
        } else {

//chegEA , commented below line which gives segmentation fault if file to cpy doent exists and try to close
//fclose(temp);
            FILE *fw = fopen(argv[2], "w");
            if(fw) {
                char ch = 0;
                while((ch = getc(fr)) != EOF) {
                    putc(ch, fw);
                }
                fclose(fw);
            } else {
                error("can not write to name of copy");
            }
        }

//Chegg EA, chek if fr is not null , then close it,otherwise it gives segmentation fault

if(!fr)
        fclose(fr);
    }
  
  
    // close files
    return 0;
}

  

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote