Saturday, June 20, 2009

String Manipulations

Problem: Reverses a character string in place.
Solution:read

#include <iostream>
using namespace std;

char *revstr(char * str);

/**
******************************************************************************
*
* Reverses character string in place
*
******************************************************************************
*/
int main (int argc, char *argv[])
{
char buf[128];
char *str = buf;

cout << "Enter string:";
str = fgets(buf, 127, stdin);

if (str)
{
size_t len = strlen(str) -1; // subtract line feed
str[len] = '\0'; // strip line feed
printf("in (%03d): %s\n", len, str);
printf("out(%03d): %s\n", len, revstr(str));
}
return(0);
}


/**
******************************************************************************
*
* Reverses character string in place
*
* @param str
*
* @return char*
*
******************************************************************************
*/
char *revstr(char *str)
{
if ( (str!=NULL) && (*str!='\0') )
{
size_t len = strlen(str);

char *start, *end;
start = str;
end = &str[len-1]; // adjust index to zero base
for(size_t i=0; i<len/2; i++)
{
*start ^= *end;
*end ^= *start;
*start++ ^= *end--;
}
}
return str;
}
hide solution

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.