aboutsummaryrefslogtreecommitdiff
path: root/src/strcmp.c
blob: d626bd3a1469d6a54557584cc96aba1d18c6204b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
/* Compare S1 and S2, returning less than, equal to or
   greater than zero if S1 is lexicographically less than,
   equal to or greater than S2.  */
int strcmp (const char *p1, const char *p2)
{
  const unsigned char *s1 = (const unsigned char *) p1;
  const unsigned char *s2 = (const unsigned char *) p2;
  unsigned char c1, c2;

  // print out input values
  printf("strcmp('%s', '%s')", p1, p2);
  do
    {
      c1 = (unsigned char) *s1++;
      c2 = (unsigned char) *s2++;
      if (c1 == '\0') {
          // print return value
          printf(" = %d\n", c1 - c2);
          return c1 - c2;
      }
    }
  while (c1 == c2);

  printf(" = %d\n", c1 - c2);
  return c1 - c2;
}