/* Programmed by Kurt Nørmark, April 2003 */ #include #include /* Assume as a precondition that both s1 and s2 are non-NULL values, and '0' terminated strings. */ int mystrcmp(const char* s1, const char* s2){ int result; if (*s1 == '\0' && *s2 == '\0') result = 0; else if (*s1 == '\0' && *s2 != '\0') result = -1; else if (*s1 != '\0' && *s2 == '\0') result = 1; else if (*s1 < *s2) result = -1; else if (*s1 > *s2) result = 1; else /* (*s1 == *s2) */ result = mystrcmp(s1+1, s2+1); return result; } void compare(char *s1, char *s2){ printf("strcmp(\"%s\",\"%s\") = %i, %i\n", s1, s2, mystrcmp(s1,s2), strcmp(s1,s2)); } int main(void) { compare("abe", "kat"); compare("abe", "abe"); compare("", "kat"); compare("", ""); compare("", "a"); compare("a", ""); compare("abe", "aben"); compare("aben", "aben"); return 0; }