www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2001/09/28/20:34:14

Message-ID: <3BB50884.347A4384@yahoo.com>
From: CBFalconer <cbfalconer AT yahoo DOT com>
Organization: Ched Research
X-Mailer: Mozilla 4.75 [en] (Win98; U)
X-Accept-Language: en
MIME-Version: 1.0
Newsgroups: comp.os.msdos.djgpp
Subject: Re: Please add strrev proposal
References: <lcq8rtk1nqua2hc6rqfhmqisbd587n8t2n AT 4ax DOT com> <Xns912A8823C1399ASINANUNUR AT 132 DOT 236 DOT 56 DOT 8>
Lines: 73
Date: Sat, 29 Sep 2001 00:28:28 GMT
NNTP-Posting-Host: 12.90.171.16
X-Complaints-To: abuse AT worldnet DOT att DOT net
X-Trace: bgtnsc06-news.ops.worldnet.att.net 1001723308 12.90.171.16 (Sat, 29 Sep 2001 00:28:28 GMT)
NNTP-Posting-Date: Sat, 29 Sep 2001 00:28:28 GMT
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

"A. Sinan Unur" wrote:
> 
> 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.

Thank you.  I knew there was a reason I made my equivalent
(revstring) a void function.  I just didn't know what it was :-)

-- 
Chuck F (cbfalconer AT yahoo DOT com) (cbfalconer AT XXXXworldnet DOT att DOT net)
   (Remove "XXXX" from reply address. yahoo works unmodified)
   mailto:uce AT ftc DOT gov  (for spambots to harvest)


- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019