Mail Archives: djgpp/2001/09/28/13:34:18
Radical NetSurfer wrote in
news:lcq8rtk1nqua2hc6rqfhmqisbd587n8t2n AT 4ax DOT com:
> I would like to encourage everyone who has a need for
> strrev to come forward and encourage the maintainers of
> LIBC used with GCC to kindly add strrev.
Count me against this if for no other reason that the fact that I do not
like extra nonstandard function which solve tiny problems. If you need the
functionality, you can write one for your own situation. If it is going to
be added to a library, the solution needs to be useful to more than just
one person in a particular situation.
Anyway, the main point of my post, however, is to point out just one of the
gotchas with these kinds of functions.
You give the following usage example:
> Example
> printf("The reverse of %s is %s\n", str, strrev(str) );
Hmmmmm ..... let us see using the code you suggested:
/* +++Date last modified: 05-Jul-1997 */
/*
** STRREV.C - reverse a string in place
**
** public domain by Bob Stout
*/
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
char *strrev(char *str) {
char *p1, *p2;
if (! str || ! *str) return str;
for (p1 = str, p2 = str + strlen(str) - 1; p2 > p1; ++p1, --p2)
{
*p1 ^= *p2;
*p2 ^= *p1;
*p1 ^= *p2;
}
return str;
}
int main(void)
{
char s[] = "This is a test.";
printf("Original String: %s\nReversed String:%s\n", s, strrev(s));
return 0;
}
C:\var>gcc djstrrev.c -o djstrrev.exe -O2 -Wall
C:\var>djstrrev
Original String: .tset a si sihT
Reversed String: .tset a si sihT
Now, think about that.
--
--------------------------------
A. Sinan Unur
http://www.unur.com/
- Raw text -