Question & Answer: home / study / engineering / computer science / computer science questions and answers / c program please!! write two funct…..

home / study / engineering / computer science / computer science questions and answers / c program please!! write two functions, first and … Your question has been answered Let us know if you got a helpful answer. Rate this answer Question: C PROGRAM PLEASE!! Write two functions, first and … C PROGRAM PLEASE!! Write two functions, first and last described as follows; • the function first takes a string s and a character c as arguments and returns a pointer to (i.e. the address of) the first occurrence of the character c in the string s. That is, if s = “A string to be searched” and c = ’e’, then the function first returns a character pointer which is the address of the ’e’ in the word “be”. If the character does not occur in the string s then the value NULL is returned. • the function last takes a string s and a character c as arguments and returns a pointer to (i.e. the address of) the last occurrence of the character c in the string s. That is, if s = “A string to be searched” and c = ’e’, then the function last returns a character pointer which is the address of the ’e’ just before the ’d’ in the last word. Again, if the character does not occur in the string then the NULL pointer is returned. Write a main program which defines a string, str, which contains the sentence ”A string to be searched”. Your program should then prompt the user for the character to search for, c. The functions first and last are then called with str and c as arguments and the resulting strings (starting at the returned pointers) are printed to an output file. For example, if you type in the letter ’s’ as the character to search for, your program should print out Original string: A string to be searched First occurrence of ’s’ starts the string: string to be searched Last occurrence of ’s’ starts the string: searched Test your program using the characters ’r’, ’e’ and ’q’. Note that the last should give the error message: Character ’q’ not found

Expert Answer

 

Explanation::

  • Code in c is given below.
  • Every step is explained well in code itself in form of comments.
  • Code is easy to understand and most important points are provided in comments.
  • Both function first and last runs well for provided test cases.
  • Program is case sensitive for characters.

Code in c::

#include<stdio.h>
#include<string.h>
char * first(char str[],char c); /*char pointer functions are created named first and last*/
char * last(char str[],char c);

int main(){
/* String named str is declared and initialized */
char str[]=”A string to be searched”;
/*Prompting user to enter the char */
printf(“Enter character to be searched for :: “);
char c; // char c is declared
scanf(“%c”, &c); // char c is scanned

/*
* *start is char pointer which is used to call function “first(str,c)”.
* It returns address of first occurrence of char c if present
* else returns NULL.
*/
char *start = first(str,c);
printf(“nFunction first output::”);
if(start==NULL){
printf(“nCharacter ‘%c’ not found”,c);
}else{
/*
* Here if char is present then char *k is used to traverse in string str starting
* from address of char which is returned by function “first”
* Below for loop runs from address returned by function up to the null pointer in string
* i.e ‘’.
* For loop print every char starting from given address char up to end of the string.
*/
char *k;
printf(“n”);
for(k=start;*k!=’’;k++){
printf(“%c”,*k);
}
printf(“n”);
}

/*
* *end is char pointer which is used to call function “last(str,c)”.
* It returns address of first occurrence of char c if present
* else returns NULL.
*/
char *end=last(str,c);
printf(“nFunction last output::”);
if(end==NULL){
printf(“nCharacter ‘%c’ not found”,c);
}else{
/*
* Here if char is present then char *k is used to traverse in string str starting
* from address of char which is returned by function “last”
* Below for loop runs from address returned by function up to the null pointer in string
* i.e ‘’.
* For loop print every char starting from given address char up to end of the string.
*/
char *k;
printf(“n”);
for(k=end;*k!=’’;k++){
printf(“%c”,*k);
}
printf(“n”);
}

return 0;
}
char*first(char str[],char c) {
/*
* Below for loop starts from index i=0 and ends at index i=strlen(str)-1 i.e the last char of string.
* And if str[i] is equal to char c then function returns address of char at str[i].
* If char c is absent then it simply returns NULL eventually.
*/

int i;
char *input; // char pointer to store address of char at str[i]
for ( i = 0; i < strlen(str); i++) {
if(str[i]==c){
input=&str[i];
return input;
}
}

return NULL;
}
char*last(char str[],char c)
{
/*
* Below for loop starts from index i=strlen(str)-1 and ends at index i=0 i.e the first char of string.
* And if str[i] is equal to char c then function returns address of char at str[i].
* If char c is absent then it simply returns NULL eventually.
*/

int i;
char *input; // char pointer to store address of char at str[i]
for(i=strlen(str)-1;i>=0;i–)
{
if(str[i]==c){
input=&str[i];
return input;
}
}
return NULL;
}

OUTPUT::

TEST RUN FOR CHAR ‘r’ ::

TEST RUN FOR CHAR ‘e’ ::

TEST RUN FOR CHAR ‘q’ ::

Still stressed from student homework?
Get quality assistance from academic writers!