On Tue, 21 Jun 2016 14:43:03 -0400, Steven W. Scott wrote:
> May as well toss in the assembler guy approach to the problem:
> 
> char SpaceSquash()
> {
>           for (i = strlen(desc) - 1; i > 0; i--) {
>                if (desc[i-1] == ' ') {
>                    if (desc[i] == ' ') {
>                        strncpy(&desc[i], &desc[i+1], (strlen(desc)-i));
>                     }
>                 }
>             }
>           return 0;
> }


Assuming that was intended to be a solution to the original 
problem[1]: Sorry, but you missed point.

However, it is an interesting solution to another problem, 
namely that of compressing any sequence of blanks in a 
string to exactly one space. Interesting insofar, as it is 
very inefficient by copying the tail part of the string over 
and over again.  So, no cigar here either. ;o)

A more idiomatic and better performing solution to that 
would be something along the lines of: 

char *SpaceSquash( char *str )
{
  char *s = str, *d = str;
  while ( *s )
  {
    *d++ = *s;
    if ( *s++ == ' ' )
      while ( *s == ' ' )
        ++s;
  }
  *d = '\0';
  return str;
}


[1] K&R2 Exercise 1-9:  Write a program to copy its input 
    to its output, replacing each string of one ore more 
    blanks by a single blank.

Regards
Urban

_______________________________________________
Dng mailing list
Dng@lists.dyne.org
https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng

Reply via email to