S19 Answer


/* Puzzle S19 — Delete the first N characters from a string */
#include <stdio.h>
#include <stdlib.h>

void deleteFirstN( char *str, int N )
{
  int len=0;
  char *p;

  if ( N <= 0 ) return;

  while ( *p++ ) len++ ;
  if ( len <= N ) *str = '\0' ;

  p = str+N;
  while ( *p )
  {
    *str = *p ;
     str++;
     p++ ;
  }
  *str = '\0' ;
}

struct test
{
  char str[50];
  char N;
};

int main(int argc, char *argv[])
{
  struct test trials[] =
  {
    {"blue berry", 5},
    {"123456789", 0},
    {"123456789", 1},
    {"123456789", 2},
    {"123456789", 3},
    {"123456789", 4},
    {"123456789", 7},
    {"123456789", 8},
    {"123456789", 9},
    {"123456789", -1},
    {"123456789", -8},
    {"1234", 3},
    {"123", 3},
    {"12", 3},
    {"1", 3},
    {"", 3},
 };

  int j;
  for ( j=0; j<sizeof(trials)/sizeof(struct test); j++ )
  {
    printf( "\"%s\" - %d =\t", trials[j].str, trials[j].N );
    deleteFirstN( trials[j].str, trials[j].N );
    printf( "\"%s\"\n", trials[j].str );
  }

  system("PAUSE");
  return 0;
}

Comments: