Search for question
Question

Problem 1 (35 pts) Dynamic memory allocation (malloc() and free())

The C standard library includes two functions that make use of a function pointer to provide

flexible sort (qsort()) and binary search (bsearch()) capabilities. We are going to use those

functions, along with malloc() and free(), which provide support for allocating blocks of

dynamic memory. Consider a program that sorts a series of words entered by a user:

Enter word: foo

Enter word: bar

Enter word: baz

Enter word: quux

Enter word:

In sorted order: bar baz foo quux

a. (30 pts) Write a program that reads in words from stdin and prints them to stdout in

sorted order. Your program must have the following constraints and assumptions:

• Assume that each word is no more than 20 characters long.

• Stop reading words when the user enters and empty word (only a \n).

• Use malloc() to store each word in a dynamically allocated string.

• Hold the string addresses returned by malloc() in an array of pointers to keep

track of the strings.

After all the words have been entered, sort the array using the C library qsort()

function. The compare function is included in the starters folder.

Use a loop to print the words in sorted order.

• Don't forget to use free() to deallocate the strings before you exit the program.

• Hint: This is not required, but you may want to use the getaline() (and perhaps

the copy()) function(s) from the LongestLineHelper ADT used in Homeworks #1

and #2. Longest LineHelper.o is included in the starters folder.

Note: The intent is that you only use the provided API which is the same as in

LongestLineHelper.c but you won't be marked down if you make changes to the

functions.

b. (5 pts) Compile, debug, and execute your application using the command line. Include at

least 10 words to show that your application works correctly. Submit your source code and

a transcript showing that your application runs successfully.

Fig: 1