There might be some communication issues here.
The point I think vlad is trying to make is that using strlen() on the value you pass to strncmp is likely a bug
because it does not do what you expect.
strncmp( "foo", "foobar", strlen("foo") ); // <- probably wrong
This is bad because strlen gives you the length of "foo", which is 3. Therefore strncmp will only compare 3 characters. Since the first 3 characters of each string are identical... strncmp will return 0 indicating they match, even though they clearly do not.
The 3rd parameter should not be the length of the string, but should be the size of the buffer
. The whole point of the param is to prevent buffer overflow... so giving it a strlen value completely defeats the point.
isValid = strncmp(str1, str2, MAX(strlen(str1), strlen(str2));
This is bad code. The whole point of strncmp is to be "safer" by stopping from going out of bounds of a given buffer.
In that regard strlen() is "unsafe" because it iterates over the entire string without regard to where the buffer actually ends.
So in effect... doing strlen on BOTH
strings is even less safe and slower
than just doing a regular, 'deprecated' strcmp.
Putting the calls in a MAX macro is even worse still
because it will ensure strlen is called multiple times on the same string, resulting in the string being unnecessarily parsed twice.
Do yourself a favor and just use strcmp.