I'm having an issue with solving a coding exercise and during debugging I've noticed that my strcmp() function doesn't work as I expected. The strcmp() function returns the wrong value compared to what I would expect. Perhaps I'm lacking some crucial undertanding of how strcmp() really works.
My code:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char string[] = "dogs";
char compare[] = "bark";
int result = strcmp(string, compare);
printf("int result = %d\n", result);
}
The return value of the program is:
int result = 2
which is unexpected for me since the documentation of strcmp() states that:
strcmp(string_A, string_B)
string_A>string_B==> return value >0string_A<string_B==> return value <0string_A==string_B==> return value =0
In my example strcmp(string, compare) or strcmp("dogs", "bark") the return value should be less than 0 since "dogs" < "bark" but it keeps returning 2 which I'm also not sure if it's expected behaviour that it always prints out the same integer.
False.
Since 'd' comes after 'b', or more specifically since the character code for 'd' is greater than the character code for 'b', the former is considered greater, and therefore a value greater than 0 is returned.