Re: String reversing problem
- From: "tmp123" <tmp123@xxxxxxxxx>
- Date: 30 Dec 2005 13:02:46 -0800
Chuck F. wrote:
> tmp123 wrote:
> > int revstring ( char *s )
> > {
> > char *e;
> > int r;
> > for( e=s+(r=strlen(s))-1; s<e; *s^=*e^=*s^=*e, s++, e--);
> > return r;
> > }
>
> FYI your version invokes undefined behaviour. Try it with a string
> of zero chars. My length test is not there for fun. I also have
> evil suspicions about the xor operations.
>
Hi,
If length is 0, then e=s-1, thus s<e is false exiting loop.
However, if the usage of pointer comparation and pointer substraction
is not welcome, another version:
void revstring ( char *s )
{
char *e;
for( e=s+strlen(s); s!=e-- && s!=e; *s^=*e^=*s++^=*e);
}
Kind regards.
PS: some days ago, someone posted about if "C is easy". I do not known,
but it is tricky.
.
- Follow-Ups:
- Re: String reversing problem
- From: Chuck F.
- Re: String reversing problem
- From: Keith Thompson
- Re: String reversing problem
- References:
- String reversing problem
- From: Albert
- Re: String reversing problem
- From: slebetman@xxxxxxxxx
- Re: String reversing problem
- From: pai
- Re: String reversing problem
- From: Chuck F.
- Re: String reversing problem
- From: tmp123
- Re: String reversing problem
- From: Chuck F.
- String reversing problem
- Prev by Date: Re: exponentiation operator (lack of)
- Next by Date: Re: void * pointer convert problem.
- Previous by thread: Re: String reversing problem
- Next by thread: Re: String reversing problem
- Index(es):