Puzzle S7

Concatenate two strings

[M-5]Write function stringConcat( char *s1, char *s2) that appends the contents of the string s2 to the end of the string s1. The null character that ends s1 is overwritten with the first character in s2 and a new null character is place at the end of the combined strings. String s1 is assumed to be contained in a buffer that has enough room for the combined length of the strings. The string s2 is not affected. The function returns the address of the first byte of s1 (which is the value of s1 that is passed into the function.) This function is similar to the standard strcat() function. Here is a picture that shows the operation of the function:

one string concatenated onto another

The variable p is local to the function so that the value in s1 can be returned, as per specifications. Here is a testing program:

#include <stdio.h>
#include <stdlib.h>

void stringCopy( char *copy, char *source )
{
}

char *stringConcat( char *s1, char *s2 )
{
}

int main()
{
  char buffer[ 100 ];
  char *trialsA[] =
  {
  "The game is",
  "Genius is an infinite capacity",
  "So is",
  "",
  "",
  "As always,\n",
  "Will\ttabs\t",
  "For great fun, "
  };

  char *trialsB[] =
  {
  " afoot!",
  " for taking pains.",
  " programming.",
  "",
  "concatenated to an empty string",
  "linefeeds should\nwork.",
  "confuse\tthings?",
  " change the buffer size to 5!"
  };

  int j ;
  for ( j=0; j<sizeof(trialsA)/sizeof(char *); j++ )
  {
    stringCopy( buffer, trialsA[j] );
    stringConcat( buffer, trialsB[j] );
    printf("%s\n", buffer );
  }

  return 0;
}
stringCopy() is used in the testing program and also might be used in stringConcat().

Previous Page        Answer         Next Page         Home