Question

In: Computer Science

A C PROGRAM *Edit/Update I do not need the file loading script, but I am not...

A C PROGRAM

*Edit/Update I do not need the file loading script, but I am not against it being included in the answer*

I must read off of an excel file (comma separated) to input five different things for a book, all comma separated, there are 360 books in the file. The book title, author, ISBN number, number of pages, and finally the year it was published. Now some of the ISBN or Pg numbers may be missing and will be read as N/A in the file.

a structure named book is with the following inputs to be used

a. char title[255];

b. char author_name[50];

c. char ISBN[10];

d. int pages;

e. int year_published;

Create a function called print_book ( ) that takes a book as a parameter. The function should neatly print the contents of that book’s structure to the terminal window. Remember: some records might have null parameters, make sure to handle that in your output.

Finally

Create a function called search_title ( ) that takes a book array, the number of books in that book array, and a character string title as parameters. This search function should loop through all of the books in the array in search of a title that matches with the passed character string, printing to the terminal any books that fulfill this (there could be more than 1 match).

Solutions

Expert Solution

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_STR_LEN 2048
#define MAX_BOOKS 10000

struct book{
char title[256];
char author_name[256];
char ISBN[10];
int pages;
int year_published;
};

struct book books[MAX_BOOKS];

int readBookFile()
{
/* FileStream for the Library File */
FILE *File;

/* alocating the space for the reading buffer */
char *buf = malloc(MAX_STR_LEN);
char *temp;

/* See if there is enough space in memory for all the books */
if (buf == NULL) {
printf ("No memory\n");
return 1;
}

/*Reading the file and making sure that whe are able to read it, make sure to change the name of the file for your use*/
if ( ( File = fopen( "input.txt", "r" ) ) == NULL )
{
printf( "File could not be opened.\n" );
}

/*using fgets to read a file line and separating each book by comma*/
int i = 0;
while (fgets(buf, 255, File) != NULL)
{
if ((strlen(buf)>0) && (buf[strlen (buf) - 1] == '\n'))
buf[strlen (buf) - 1] = '\0';

temp = strtok(buf, ",");
strcpy( books[i].title, temp);

temp = strtok(NULL, ",");
strcpy( books[i].author_name, temp);

temp = strtok(NULL, ",");
strcpy( books[i].ISBN, temp);

temp = strtok(NULL, ",");
books[i].pages = atoi(temp);

temp = strtok(NULL, ",");
books[i].year_published = atoi(temp);

/*printing each reading book for debugging porpuses*/
/*printf("ID: %d, %s, %s, %s, %d, %d\n",i ,books[i].title , books[i].author_name, books[i].ISBN , books[i].pages, books[i].year_published);*/

i++;
}
/*make sure to always close the file*/
fclose(File);
return i;
}

/*function to print book*/
void print_Book(int book_number) {
printf("%d, %s, %s, %s, %d, %d\n",book_number,books[book_number].title , books[book_number].author_name, books[book_number].ISBN , books[book_number].pages, books[book_number].year_published);
}

/*function to search for a book*/
void search_Book(char book_to_search[256], int begin, int end)
{

int i;
/*i = sizeof(books) / sizeof(books[0]);
printf ("%i \n", i);*/


for (i = begin; i < end; i++)
{
if (strcmp(books[i].title, book_to_search) == 0) {
print_Book(i);
}
}

}


int main(int argc, char **argv)
{
/*call the reading function*/
int size = readBookFile();

/*searching and printing a book*/
search_Book("title2",0,size);

return 0;
}

COMMENT DOWN FOR ANY QUERIES AND,

LEAVE A THUMBS UP IF THIS ANSWER HELPS YOU.


Related Solutions

I need to update this program to follow the these requirements please and thank you :...
I need to update this program to follow the these requirements please and thank you : Do not use packages Every class but the main routine class must have a toString method . The toString method for Quadrilateral should display its fields: 4 Points. All instance variables should be declared explicitly private . Area incorrect : enter points no: 1 1 3 enter points no: 2 6 3 enter points no: 3 0 0 enter points no: 4 5 0...
I need C++ program that Read an input file of text.txt one word at a time....
I need C++ program that Read an input file of text.txt one word at a time. The file should consist of about 500 words. The program should remove all punctuations,keep only words. Store the words in a built-in STL container, such as vector or map.Can someone help with any additional comments that I can understand the logic?thank you
Hello, I am trying to write a C++ program that will do the following: Use the...
Hello, I am trying to write a C++ program that will do the following: Use the STL stack container in a program that reads a string, an arithmetic expression to be exact, one character at a time, and determines if the string has balanced parenthesis – that is, for each left parenthesis there is exactly one matching right parenthesis later in the string.                         Use the following strings to test your program. A+ B - C A * B / (C...
C++ Assignment Hi, I need to create a program that: 1.Reads a source file (.txt) with...
C++ Assignment Hi, I need to create a program that: 1.Reads a source file (.txt) with following information: 1,2,3,4,5 red,blue,green,yellow,orange left, right,front, back 2. After having program read the .txt file, output the above information in categories of Symbol, Token Type, and Count : Example: Symbol---Token Type (data type)----Count (how many times symbol appeared in .txt file) =========================================================================== 1 ----digit ----1 2 ----digit ----1 red ----color ----1 blue ----color ----1 left ----direction ----1 right ----direction    ----1
C++ Assignment Hi, I need to create a program that: 1.Reads a source file (.txt) with...
C++ Assignment Hi, I need to create a program that: 1.Reads a source file (.txt) with following information: 1,2,3,4,5 red,blue,green,yellow,orange left, right,front, back 2. After having program read the .txt file, output the above information in categories of Symbol, Token Type, and Count : Example: Symbol---Token Type (data type)----Count (how many times symbol appeared in .txt file) =========================================================================== 1 ----digit ----1 2 ----digit ----1 red ----color ----1 blue ----color ----1 left ----direction ----1 right ----direction    ----1
C++ Assignment Hi, I need to create a program that: 1.Reads a source file (.txt) with...
C++ Assignment Hi, I need to create a program that: 1.Reads a source file (.txt) with following information: 1,2,3,4,5 red,blue,green,yellow,orange left, right,front, back 2. After having program read the .txt file, output the above information in categories of Symbol, Token Type, and Count : Example: Symbol---Token Type (data type)----Count (how many times symbol appeared in .txt file) =========================================================================== 1 ----digit ----1 2 ----digit ----1 red ----color ----1 blue ----color ----1 left ----direction ----1 right ----direction    ----1
I am writing a shell program in C++, to run this program I would run it...
I am writing a shell program in C++, to run this program I would run it in terminal like the following: ./a.out "command1" "command2" using the execv function how to execute command 1 and 2 if they are stored in argv[1] and argv[2] of the main function?
I am attempting to write a script using bash on Linux. My program must save the...
I am attempting to write a script using bash on Linux. My program must save the long list format of the parent directory to a text file. Then, it must print how many items are in this parent directory. Then, it must sort the file in reverse order and save it to a different text file. I understand that the parent directory is accessed using cd .., and I understand that a file can be written to by echoing and...
Using java, I need to make a program that reverses a file. The program will read...
Using java, I need to make a program that reverses a file. The program will read the text file character by character, push the characters into a stack, then pop the characters into a new text file (with each character in revers order) EX: Hello World                       eyB       Bye            becomes    dlroW olleH I have the Stack and the Linked List part of this taken care of, I'm just having trouble connecting the stack and the text file together and...
I am trying to make a program in Python that opens a file and tells you...
I am trying to make a program in Python that opens a file and tells you how many lines, vowels, consonants, and digits there are in the file. I got the print out of lines, digits, and consonants, but the if statement I made with the vowels list isn't recognizing them. How can I make the vowels go through the if statement with the list? Am I using the wrong operator? Here is my program #Assignment Ch7-1 #This program takes...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT