1answer.
Ask question
Login Signup
Ask question
All categories
  • English
  • Mathematics
  • Social Studies
  • Business
  • History
  • Health
  • Geography
  • Biology
  • Physics
  • Chemistry
  • Computers and Technology
  • Arts
  • World Languages
  • Spanish
  • French
  • German
  • Advanced Placement (AP)
  • SAT
  • Medicine
  • Law
  • Engineering
8090 [49]
3 years ago
5

Part 1: For this assignment, call it assign0 Implement the following library and driver program under assign0: Your library will

be consisting of myio.h and myio.c. The function prototypes as well as more explanations are listed in myio.h. Please download it and accordingly implement the exported functions in myio.c. Basically, you are asked to develop a simple I/O library which exports a few functions to simplify the reading of an integer, a double, and more importantly a string (whole line). In contrast to standard I/O functions that can read strings (e.g., scanf with "%s", fgets) into a given static size buffer, your function should read the given input line of characters terminated by a newline character into a dynamically allocated and resized buffer based on the length of the given input line. Also your functions should check for possible errors (e.g., not an integer, not a double, illigal input, no memory etc.) and appropriately handle them. Then write a driver program driver.c that can simply use the functions from myio library. Specifically, your driver program should get four command-line arguments: x y z output_filename. It then prompts/reads x many integers, y many doubles, and z many lines, and prints them into a file called output_filename.txt. Possible errors should be printed on stderr.
myio.h file

/*
* File: myio.h
* Version: 1.0
* -----------------------------------------------------
* This interface provides access to a basic library of
* functions that simplify the reading of input data.
*/

#ifndef _myio_h
#define _myio_h

/*
* Function: ReadInteger
* Usage: i = ReadInteger();
* ------------------------
* ReadInteger reads a line of text from standard input and scans
* it as an integer. The integer value is returned. If an
* integer cannot be scanned or if more characters follow the
* number, the user is given a chance to retry.
*/

int ReadInteger(void);

/*
* Function: ReadDouble
* Usage: x = ReadDouble();
* ---------------------
* ReadDouble reads a line of text from standard input and scans
* it as a double. If the number cannot be scanned or if extra
* characters follow after the number ends, the user is given
* a chance to reenter the value.
*/

double ReadDouble(void);

/*
* Function: ReadLine
* Usage: s = ReadLine();
* ---------------------
* ReadLine reads a line of text from standard input and returns
* the line as a string. The newline character that terminates
* the input is not stored as part of the string.
*/

char *ReadLine(void);

/*
* Function: ReadLine
* Usage: s = ReadLine(infile);
* ----------------------------
* ReadLineFile reads a line of text from the input file and
* returns the line as a string. The newline character
* that terminates the input is not stored as part of the
* string. The ReadLine function returns NULL if infile
* is at the end-of-file position. Actually, above ReadLine();
* can simply be implemented as return(ReadLineFile(stdin)); */

char *ReadLineFile(FILE *infile);

#endif
Computers and Technology
1 answer:
just olya [345]3 years ago
8 0

Answer:

Explanation:

PROGRAM

main.c

#include <fcntl.h>

#include <stdio.h>

#include <stdlib.h>

#include <sys/stat.h>

#include <sys/types.h>

#include <unistd.h>

#include "myio.h"

int checkInt(char *arg);

int main(int argc, char *argv[]) {

  int doubles, i, ints, lines;

  char newline;

  FILE *out;

  int x, y, z;

  newline = '\n';

  if (argc != 5) {

     printf("Usage is x y z output_filename\n");

     return 0;

  }

  if (checkInt(argv[1]) != 0)

     return 0;

  ints = atoi(argv[1]);

  if (checkInt(argv[2]) != 0)

     return 0;

  doubles = atoi(argv[2]);

  if (checkInt(argv[3]) != 0)

     return 0;

  lines = atoi(argv[3]);

  out = fopen(argv[4], "a");

  if (out == NULL) {

     perror("File could not be opened");

     return 0;

  }

  for (x = 0; x < ints; x++) {

     int n = ReadInteger();

     printf("%d\n", n);

     fprintf(out, "%d\n", n);

  }

  for (y = 0; y < doubles; y++) {

     double d = ReadDouble();

     printf("%lf\n", d);

     fprintf(out, "%lf\n", d);

  }

  for (z = 0; z < lines; z++) {

     char *l = ReadLine();

     printf("%s\n", l);

     fprintf(out, "%s\n", l);

     free(l);

  }

  fclose(out);

  return 0;

}

int checkInt(char *arg) {

  int x;

  x = 0;

  while (arg[x] != '\0') {

     if (arg[x] > '9' || arg[x] < '0') {

        printf("Improper input. x, y, and z must be ints.\n");

        return -1;

     }

     x++;

  }

  return 0;

}

myio.c

#include <limits.h>

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

char *ReadInput(int fd) {

  char buf[BUFSIZ];

  int i;

  char *input;

  int r, ret, x;

  i = 1;

  r = 0;

  ret = 1;

  input = calloc(BUFSIZ, sizeof(char));

  while (ret > 0) {

     ret = read(fd, &buf, BUFSIZ);

   

     for (x = 0; x < BUFSIZ; x++) {

        if (buf[x] == '\n' || buf[x] == EOF) {

           ret = -1;

           break;

        }

        input[x*i] = buf[x];

        r++;

     }

   

     i++;

   

     if (ret != -1)

        input = realloc(input, BUFSIZ*i);

  }

  if (r == 0)

     return NULL;

  input[r] = '\0';

  input = realloc(input, r+1);

  return(input);

}

int ReadInteger() {

  char *input;

  int go, num, x;

  go = 0;

  do {

     go = 0;

   

     printf("Input an integer\n");

     input = ReadInput(STDIN_FILENO);

     for (x = 0; x < INT_MAX; x++) {

        if (x == 0&& input[x] == '-')

           continue;

        if (input[x] == 0)

           break;

        else if (input[x]> '9' || input[x] < '0') {

           go = 1;

           printf("Improper input\n");

           break;

        }

    }

  } while (go == 1);

  num = atoi(input);

  free(input);

  return num;

}

double ReadDouble(void) {

  int dec, exp;

  char *input;

  int go;

  double num;

  int x;

  do {

     go = 0;

     dec = 0;

     exp = 0;

   

     printf("Input a double\n");

     input = ReadInput(STDIN_FILENO);

     for (x = 0; x < INT_MAX; x++) {

        if (x == 0&& input[x] == '-')

           continue;

        if (input[x] == 0)

           break;

        else if (input[x] == '.' && dec == 0)

           dec = 1;

        else if (x != 0&& (input[x] == 'e' || input[x] == 'E') && exp == 0) {

           dec = 1;

           exp = 1;

        }

        else if (input[x]> '9' || input[x] < '0') {

           go = 1;

           printf("Improper input\n");

           break;

        }

     }

  } while (go == 1);

  num = strtod(input, NULL);

  free(input);

  return num;

}

char *ReadLine(void) {

  printf("Input a line\n");

  return(ReadInput(STDIN_FILENO));

}

char *ReadLineFile(FILE *infile) {

  int fd;

  fd = fileno(infile);

  return(ReadInput(fd));

}

myio.h

#ifndef _myio_h

#define _myio_h

/*

* Function: ReadInteger

* Usage: i = ReadInteger();

* ------------------------

* ReadInteger reads a line of text from standard input and scans

* it as an integer. The integer value is returned. If an

* integer cannot be scanned or if more characters follow the

* number, the user is given a chance to retry.

*/

int ReadInteger(void);

/*

* Function: ReadDouble

* Usage: x = ReadDouble();

* ---------------------

* ReadDouble reads a line of text from standard input and scans

* it as a double. If the number cannot be scanned or if extra

* characters follow after the number ends, the user is given

* a chance to reenter the value.

*/

double ReadDouble(void);

/*

* Function: ReadLine

* Usage: s = ReadLine();

* ---------------------

* ReadLine reads a line of text from standard input and returns

* the line as a string. The newline character that terminates

* the input is not stored as part of the string.

*/

char *ReadLine(void);

/*

* Function: ReadLine

* Usage: s = ReadLine(infile);

* ----------------------------

* ReadLineFile reads a line of text from the input file and

* returns the line as a string. The newline character

* that terminates the input is not stored as part of the

* string. The ReadLine function returns NULL if infile

* is at the end-of-file position. Actually, above ReadLine();

* can simply be implemented as return(ReadLineFile(stdin)); */

char *ReadLineFile(FILE *infile);

You might be interested in
Whereas enterprise network convergence focuses on the consolidation of traditionally distinct voice, video, and data communicati
Vinil7 [7]

Answer: Unified communication

Explanation: Unified communication is the communication technique in which merges various communication routines into a individual business.It works as the phone system which helps in increment of productivity in an organizational business.

The unifying of voice,data/information,video etc is done for optimizing and improving the business that also results in  faster communication rates, secure communication etc.

4 0
3 years ago
Methods for preventing/overcoming group conflict include all EXCEPT:
kondor19780726 [428]

Answer:

recognizing that gender differences are a myth.

Explanation:

The options are:

  • active listening.
  • recognizing that gender differences are a myth.
  • structured debate.
  • building cross-cultural understanding

Without active listening, structured debate, and cross-cultural understanding group conflict are definitely on the card. However, no one now is concerned about gender differences. As now both the genders are already having the equal status in at least developed countries. However, this too can play a role in avoiding group conflict. However, since this is not that important considering the current context, this looks like being the correct option here. Hence, the above mentioned in the answer section is the correct option.

7 0
3 years ago
Which of the following statements best represents the impact vaudeville had on the film industry? Early silent films were more r
maria [59]

Answer:

Answer is B: Early silent film producers used many of the same acting techniques popularized in vaudeville performances, even using popular vaudeville stars as actors in their productions.

Explanation:

7 0
3 years ago
Read the statement and justify your answer. “ICT is important for every field.”
Alja [10]

Explanation:

ICT permeates all aspects of life, providing newer, better, and quicker ways for people to interact, network, seek help, gain access to information, and learn. Besides its presence everywhere, Information and Communication Technology has an immense economic significance.

4 0
3 years ago
Suppose that a disk drive has 5,000 cylinders, numbered 0 to 4,999. The drive is currently serving a request at cylinder 2,150,
Zina [86]

Answer:

The queue pending requests of FIFO order is ;

86, 1470, 1774, 948, 1509, 1022, 1750, 130.

Explanation:

The FCFS schedule is 143, 86, 1470, 913, 1774, 948, 1509, 1022, 1750, 130.

Total seek distance is 7081.

The SSTF schedule is 143, 130, 86, 913, 948, 1022, 1470, 1509, 1750, 1774.

Total seek distance is 1745.

The LOOK schedule is 143, 913, 948, 1022, 1470, 1509, 1750, 1774, 130, 86.

Total seek distance is 3319.

The SCAN schedule is 143, 913, 948, 1022, 1470, 1509, 1750, 1774, 4999, 130, 86.

Total seek distance is 9769.

7 0
3 years ago
Other questions:
  • Dominick has been hired to design a network for Pirate Press. In a paragraph of no less than 125 words, discuss what he needs to
    12·2 answers
  • What is the name of the port that you plug an ethernet network cable into?
    6·1 answer
  • A ________ is a virus that is triggered on a certain date.
    11·1 answer
  • Which describes which CTSO each student should join?]
    7·1 answer
  • The network architecture component that is a special LAN with a group of servers that enables electronic data exchange of betwee
    8·1 answer
  • 1. Which of the following statements are true about routers and routing on the Internet. Choose two answers. A. Protocols ensure
    9·2 answers
  • If you wish to sign out of your Microsoft account, tap or click ____ on the ribbon to open the Backstage view and then tap or cl
    8·1 answer
  • Write a program in C which asks the user for 10 integers and prints out the biggest one.
    10·1 answer
  • I need help fixing this please
    6·2 answers
  • Can someone help me?
    10·1 answer
Add answer
Login
Not registered? Fast signup
Signup
Login Signup
Ask question!