Question: Bonus Assignment: String Library in C Submit Assignment Due Friday, December 7, 2018 by 11:59pm Points 100 Submitting a file upload In this assignment, you'll

Bonus Assignment: String Library in C

Submit Assignment

Due Friday, December 7, 2018 by 11:59pm

Points 100

Submitting a file upload

In this assignment, you'll create your own library of string functions. You'll have the opportunity to practice manipulating strings and managing memory. Additionally, you'll learn the role of header and library files.

NOTE: You may not call functions in string.h but you can use other code in the Standard C Library.

Functions to Include in the Library

Implement each of the following functions. Be sure that any string that you create or modify is in fact a string, i.e., an array of char (whether represented as a pointer or as an arrray), terminated with the null character, '\0'.

Additionally, you should write a driver (i.e. c program that includes and then uses your library functions) which tests each of these functions on real data.

[2 points] void shorten(char *s, int new_len)

Shortens the string s to new_len. If the original length of s is less than or equal to new_len, s is unchanged

[2 points] int len_diff(char *s1, char *s2)

Returns the length of s1 - the length of s2

[2 points] void rm_right_space(char *s)

removes whitespace characters from the end of s

[2 points] void rm_space(char *s)

removes whitespace characters from the beginning and the ending s

[5 points] str_zip(char *s1, char *s2)

Returns a new string consisting of all of the characters of s1 and s2 interleaved with each other. For example, if s1 is "Spongebob" and s2 is "Patrick", the function returns the string "SPpaotnrgiecbkob"

[5 points] void capitalize(char *s)

Changes s so that the first letter of every word is in upper case and each additional letter is in lower case.

[5 points] int strcmp_ign_case(char *s1, char *s2)

Compares s1 and s2 ignoring case. Returns a positive number if s1 would appear after s2 in the dictionary, a negative number if it would appear before s2, or 0 if the two are equal.

[3 points] void take_last(char *s, int n)

Modifies s so that it consists of only its last n characters. If n is the length of s, the original string is unmodified. For example if we call take_last("Brubeck" 5), when the function finishes, the original string becomes "ubeck"

[5 points] dedup(char *s)

returns a new string based on s, but without any duplicate characters. For example, if s is the string, "There's always money in the banana stand.", the function returns the string "Ther's alwymonitbd.". It is up to the caller to free the memory allocated by the function.

[5 points] pad(char *s, int d)

returns a new string consisting of all of the letters of s, but padded with spaces at the end so that the total length of the returned string is an even multiple of d. If the length of s is already an even multiple of d, the function returns a copy of s. The function returns NULL on failure or if s is NULL. Otherwise, it returns the new string. It is up to the caller to free any memory allocated by the function.

[5 points] ends_with_ignore_case(char *s, char *suff)

returns 1 if suff is a suffix of s ignoring case or 0 otherwise.

[5 points] char *repeat(char *s, int x, char sep)

Returns a new string consisting of the characters in s repeated x times, with the character sep in between. For example, if s is the string all right, x is 3, and sep is , the function returns the new string all right,all right,all right. If s is NULL, the function returns NULL. It is up to the caller to free any memory allocated by the function.

[5 points] char *replace(char *s, char *pat, char *rep)

Returns a copy of the string s, but with each instance of pat replaced with rep, note that len(pat) can be less than, greater than, or equal to len(rep). The function allocates memory for the resulting string, and it is up to the caller to free it. For example, if we call replace("Fiore X", "X", "sucks"), what is returned is the new string Fiore sucks (but remember, pat could be longer than an individual character and could occur multiple times).

[5 points] char *str_connect(char **strs, int n, char c)

Returns a string consisting of the first n strings in strs with the character c used as a separator. For example, if strs contains the strings {"Washington", "Adams", "Jefferson"} and c is '+', the function returns the string "Washington+Adams+Jefferson"

[5 points] void rm_empties(char **words)

words is an array of string terminated with a NULL pointer. The function removes any empty strings (i.e., strings of length 0) from the array.

[5 points] char **str_chop_all(char *s, char c)

Returns an array of string consisting of the characters in s split into tokens based on the delimeter c, followed by a NULL pointer. For example, if s is "I am ready for a nice vacation" and c is ' ', it returns {"I", "am", "ready", "for", "a", "nice", "vacation", NULL}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!