blob: 368b8fbb625577cb0f179074af7bf121e9392e2f (
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
28
29
|
#include <string.h>
// https://pubs.opengroup.org/onlinepubs/9699919799/
int strcmp(const char *s1, const char *s2) {
// The strcmp() function shall compare the string pointed to by s1
// to the string pointed to by s2.
int l1, l2, rc;
l1 = l2 = rc = 0;
for (; *s1 || *s2;) {
if (*s1 != *s2)
rc++;
if (*s1) {
l1++;
s1++;
}
if (*s2) {
l2++;
s2++;
}
}
// Upon completion, strcmp() shall return an integer greater than,
// equal to, or less than 0, if the string pointed to by s1 is
// greater than, equal to, or less than the string pointed to by
// s2, respectively.
if (l2 > l1)
return -rc;
return rc;
}
|