Home Interview Questions and AnswersTechnical Interview Questions and AnswersC Programming C Language String Interview Questions and Answers For Freshers Part-2

string3. How can I remove the leading spaces from a string?

The C language does not provide a standard function that removes leading spaces from a string. It is easy, however, to build your own function to do just this. you can easily construct a custom function that uses thertrim() function in conjunction with the standard C library function strrev() to remove the leading spaces from a string. Look at how this task is performed:

#include <stdio.h>

#include <string.h>

void main(void);

char* ltrim(char*);

char* rtrim(char*);

void main(void)

{

char* lead_str = ”          This string has leading spaces in it.”;

/* Show the status of the string before calling the ltrim()

function. */

printf(“Before calling ltrim(), lead_str is ‘%s’\n”, lead_str);

printf(“and has a length of %d.\n”, strlen(lead_str));

/* Call the ltrim() function to remove the leading blanks. */

ltrim(lead_str);

/* Show the status of the string

after calling the ltrim() function. */

printf(“After calling ltrim(), lead_str is ‘%s’\n”, lead_str);

printf(“and has a length of %d.\n”, strlen(lead_str));

}

/* The ltrim() function removes leading spaces from a string. */

char* ltrim(char* str)

{

strrev(str);    /* Call strrev() to reverse the string. */

rtrim(str);     /* Call rtrim() to remove the “trailing” spaces. */

strrev(str);    /* Restore the string’s original order. */

return str;     /* Return a pointer to the string. */

}

/* The rtrim() function removes trailing spaces from a string. */

char* rtrim(char* str)

{

int n = strlen(str) – 1;     /* Start at the character BEFORE

the null character (\0). */

while (n>0)            /* Make sure we don’t go out of bounds… */

{

if (*(str+n) != ‘ ‘)    /* If we find a nonspace character: */

{

*(str+n+1) = ‘\0’; /* Put the null character at one

character past our current

position. */

break;             /* Break out of the loop. */

}

else      /* Otherwise, keep moving backward in the string. */

n–;

}

return str;                  /* Return a pointer to the string. */

}

4. How can I right-justify a string?

Even though the C language does not provide a standard function that right-justifies a string, you can easily build your own function to perform this action. Using the rtrim() function, you can create your own function to take a string and right-justify it. Here is how this task is accomplished:

#include <stdio.h>

#include <string.h>

#include <malloc.h>

void main(void);

char* rjust(char*);

char* rtrim(char*);

void main(void)

{

char* rjust_str = “This string is not right-justified.                  “;

/* Show the status of the string before calling the rjust()

function. */

printf(“Before calling rjust(), rjust_str is ‘%s’\n.”, rjust_str);

/* Call the rjust() function to right-justify this string. */

rjust(rjust_str);

/* Show the status of the string

after calling the rjust() function. */

printf(“After calling rjust(), rjust_str is ‘%s’\n.”, rjust_str);

}

/* The rjust() function right-justifies a string. */

char* rjust(char* str)

{

int n = strlen(str);   /* Save the original length of the string. */

char* dup_str;

dup_str = strdup(str);  /* Make an exact duplicate of the string. */

rtrim(dup_str);         /* Trim off the trailing spaces. */

/* Call sprintf() to do a virtual “printf” back into the original

string. By passing sprintf() the length of the original string,

we force the output to be the same size as the original, and by

default the sprintf() right-justifies the output. The sprintf()

function fills the beginning of the string with spaces to make

it the same size as the original string. */

sprintf(str, “%*.*s”, n, n, dup_str);

free(dup_str);    /* Free the memory taken by

the duplicated string. */

return str;       /* Return a pointer to the string. */

}

/* The rtrim() function removes trailing spaces from a string. */

char* rtrim(char* str)

{

int n = strlen(str) – 1;  /* Start at the character BEFORE the null

character (\0). */

while (n>0)            /* Make sure we don’t go out of bounds… */

{

if (*(str+n) != ‘ ‘)    /* If we find a nonspace character: */

{

*(str+n+1) = ‘\0’; /* Put the null character at one

character past our current

position. */

break;             /* Break out of the loop. */

}

else      /* Otherwise, keep moving backward in the string. */

n–;

}

return str;                   /* Return a pointer to the string. */

}

You may also like

Leave a Comment