Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Program in C Files to submit: read_lines.c, read_lines.h Requriements Program must compile with both -Wall and -Werror options enabled Submit only the files requested Use

Program in C

Files to submit: read_lines.c, read_lines.h

Requriements

  • Program must compile with both -Wall and -Werror options enabled
  • Submit only the files requested
  • Use doubles to store real numbers
  • Print all doubles to 2 decimal points unless stated otherwise

Restrictions

  • No global variables may be used
  • Your main function may only declare variables and call other functions

Description

The programming language Python has some really nice functions for dealing with files. One of them is called readlines and it reads the lines of the files into an array. For this projcet you will be implementing readlines in C.

Additional Details

  • For this assignment you will be creating a function and not an entire program.
  • The function your create should have the following signature:
    void read_lines(FILE* fp, char*** lines, int* num_lines)
  • This function should read all of the lines in the file pointed to by fp and
    • Set each row of lines to contain one line of the file
    • Set num_lines to be equal to the number of lines that were in the file
  • If the file is empty lines should be set to NULL and num_lines to 0
  • You should only submit read_lines.c and read_lines.h
    • I will provide main.c and the Makefile
    • Your code must compile using this Makefile and main.c
    • You cannot edit main.c
  • While you only have to write read_lines you can write as many other functions as you want

Hints

  • I highly recommend making more functions than just read_lines for solving this problem.
    • For example a function that reads a single line from the file

Examples

User input has been underlined to help you differentiate what is user input and what is program output.

Example 1

./read_lines.out Makefile

read_lines.out: read_lines.o main.o gcc -g -Wall -Werror -o read_lines.out read_lines.o main.o main.o: main.c read_lines.h gcc -g -Wall -Werror -c -o main.o main.c read_lines.o: read_lines.c read_lines.c gcc -g -Wall -Werror -c -o read_lines.o read_lines.c clean: rm -f *.out *.o

MAIN.C

#include

#include

#include "read_lines.h"

void print_lines(char** lines, int num_lines){

int i;

for(i = 0 ; i < num_lines; ++i){

printf("%d. %s", i+1, lines[i]);

}

}

void free_lines(char** lines, int num_lines){

int i;

for(i = 0 ; i < num_lines; ++i){

free(lines[i]);

}

if(lines != NULL && num_lines > 0){

free(lines);

}

}

FILE* validate_input(int argc, char* argv[]){

FILE* fp = NULL;

if(argc < 2){

printf("Not enough arguments entered. Ending program. ");

exit(0);

}

else if(argc > 2){

printf("Too many arguments entered. Ending program. ");

exit(0);

}

fp = fopen(argv[1], "r");

if(fp == NULL){

printf("Unable to open file: %s Ending program. ", argv[1]);

exit(0);

}

return fp;

}

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

char** lines = NULL;

int num_lines = 0;

FILE* fp = validate_input(argc, argv);

read_lines(fp, &lines, &num_lines);

print_lines(lines, num_lines);

free_lines(lines, num_lines);

fclose(fp);

return 0;

}

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Database Administration The Complete Guide To Dba Practices And Procedures

Authors: Craig S. Mullins

2nd Edition

0321822943, 978-0321822949

Students also viewed these Databases questions

Question

Why do HCMSs exist? Do they change over time?

Answered: 1 week ago