On Thu, 4 May 2000, Chris Maniar wrote: > strcmp() returns NULL if the strings match. Actually, you're incorrect. strcmp() returns zero (0) if the strings match. The actual description of its return value is something akin to, "strcmp(s0, s1) returns less than, equal to, or greater than zero if the string s0 is less than, equal to, or greater than the string s1." In other words, it's a character-by-character difference comparison: strcmp("a", "b") == -1 strcmp("b", "a") == 1 strcmp("a", "c") == -2 strcmp("c", "a") == 2 E.g., "a" is one less than "b," "b" is one more than "a," "a" is two less than "c," "c" is two more than "a." (We probably all know this from the alphabet: 'A' is the first letter, 'B' the second, 'C' the third. Thus, the difference of the position of C (three) and of A (one) is two.) When dealing with complete strings, the comparison is not really any different: we compare them character-by-character until we reach the end of both strings or we find a difference (note that we don't continue to compare the strings after we find a difference, instead returning that difference immediately). One important caveat is that the comparison strcmp() makes is NOT alphabetical. It's ASCII, so the difference between the strings "ab" and "abc" is not -3 (the alphabetic position of 'c') as you might expect, but -99 (where 99 is the ASCII code for 'c'). As with subtraction, the order of arguments to strcmp() is significant. Using the previous example of "ab" compared to "abc": strcmp("ab", "abc") == -99 strcmp("abc', "ab") == 99 Remember that in both cases, extending the string "abc" to be "abcdefghi" does not effect the outcome: we return after we find our first difference or if we reached the end of both strings without a difference. This is useful for sorting algorithms (for instance, qsort(), which is part of the standard C library) if you want to sort a list of strings or sort other data based on a list of strings. -dak +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 04/10/01 PDT