Question: Strings in C For this lab, you will get some practice working with C strings, you can work in teams of two . In general,

Strings in C

For this lab, you will get some practice working with C strings, you can work in teams of two.

In general, a string is a sequence of characters that we index from [0, length-1], where length is the number of characters in the sequence. A sub-string is then the sequence of characters in found between a given start index and a given end index, where 0 <= start <= end and end <= length-1. Given two strings S1 and S2, one may wish to determine is say S2 is a sub-string of S1, and if so where it starts in S1.

  • First, you are given the contents of the file main.c (which is incomplete):

#include

#include

typedef unsigned int index_t;

int index_of(const char* str, const char* sub_str);

int index_of_from(const char* str, index_t start_index,

const char* sub_str);

int main()

{

char sent[] = "This lab is fun";

char word1[] = "This";

char word2[] = "is";

char word3[] = "fun";

char word4[] = "bun";

char word5[] = "funny";

printf(" Sentence to search : %s ", sent);

int ss_loc = index_of(sent, word1);

if ( ss_loc != -1 )

printf("\"%s\" found starting at index : %d ", word1, ss_loc);

ss_loc = index_of(sent, word2);

if ( ss_loc != -1 )

printf("\"%s\" found starting at index : %d ", word2, ss_loc);

ss_loc = index_of_from(sent, ss_loc+1, word2);

if ( ss_loc != -1 )

printf("\"%s\" found starting at index : %d ", word2, ss_loc);

ss_loc = index_of(sent, word3);

if ( ss_loc != -1 )

printf("\"%s\" found starting at index : %d ", word3, ss_loc);

ss_loc = index_of(sent, word4);

if ( ss_loc != -1 )

printf("\"%s\" found starting at index : %d ", word4, ss_loc);

else

printf("\"%s\" was not found ", word4);

ss_loc = index_of(sent, word5);

if ( ss_loc != -1 )

printf("\"%s\" found starting at index : %d ", word5, ss_loc);

else

printf("\"%s\" was not found ", word5);

return 0;

}

// if sub_str exists as a sub-string in the string str

// return the starting index of the left-most occurrence;

// otherwise return -1

int index_of(const char* str, const char* sub_str)

{

// your code here

}

// if sub_str exists as a sub-string in the string (str + start_index)

// return the starting index of the left-most occurrence;

// otherwise return -1

int index_of_from(const char* str, index_t start_index,

const char* sub_str)

{

// your code here

}

  • First, you will need to write the body for the function :
    • index_of

Such that when all the files are in one directory (in UNIX) typing

gcc -Wall main.c

followed by

./main

Will produce the following output:

$ gcc -Wall main.c

$ ./main

Sentence to search : This lab is fun

"This" found starting at index : 0

"is" found starting at index : 2

"is" found starting at index : 9

"fun" found starting at index : 12

"bun" was not found

"funny" was not found

  • Second, copy the body of your index_of function into the body of the index_of_from function and think about what lines of code will need to be added to meet its specifications. Note: you can do it by adding a single new first line of code, but also worry about an obvious error that then may occur and how to avoid it.

Please write the code of the program above as soon as possible.

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!