Puzzle S12

String compare

[E-4]Write a function stringCompare(char const *left, char const *right ) that compares two strings. If the strings are equal, then the function returns 0. If the strings are not equal, return a negative value if the left string is shorter than or occurs alphabetically before the right string. Otherwise, return a positive value.

 Value of
stringCompare( left, right )
left equal to right 0
left less than right negative
left greater than right positive

The value that is returned is determined by the first character position at which the strings differ. Say that the character at this position in the left string is L and the character at this position in the right string is R. Then the function returns (L-R). Here is a testing program:

/* Puzzle S12 -- string compare*/

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

int stringCompare( char const *left, char const *right )
{
}

int main(int argc, char *argv[])
{
  char *trials[][2] =
  {
    {"a", "a"},
    {"a", "f"},
    {"abc", "abc"},
    {"abc", "def"},
    {"abcdef", "abcdef"},
    {"abcdef", "aaaaaa"},
    {"abcdeff", "abcdef"},
    {"abcdef", "xabcdef"},
    {"xabcdef", "abcdef"},
    {"abcdef", "rats"},
    {"abbccf", "cc"},
    {"abcdefg", "g"},
    {"apple", ""},
    {"", "apple"},
    {"",""},
    {"green", "green"},
    {"ASBC", "ASBC"},
    {"    ", "    "},
    {"12345", "12345"},
    {"++-!@#", "++-!@#"},
    {"tab\ttab", "tab\ttab"}
   };

  int j;
  for ( j=0; j<sizeof(trials)/sizeof(trials[0]); j++ )
  {
    int result =  stringCompare( trials[j][0], trials[j][1] ) ;
    if ( result==0 )
      printf("%s\t==\t%s\n", trials[j][0], trials[j][1] );
    else if ( result<0)
      printf("%s\t<\t%s\n", trials[j][0], trials[j][1] );
    else
      printf("%s\t>\t%s\n", trials[j][0], trials[j][1] );
  }

  return 0;
}

Write this function by making a single character change to the answer for puzzle S11.

Note: this function is similar to the function strcmp() described in <string.h>. However, strcmp() is not required to return any particular positive or negative value for dissimilar strings. In professional-level code, use the standard function rather than your own.



Answer         Next Page         Previous Page Home