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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
/*
20130505
Jan Mojzis
Public domain.
*/
#include "str.h"
long long str_len(const char *s) {
long long i;
for (i = 0; s[i]; ++i);
return i;
}
long long str_chr(const char *s, int c) {
long long i;
char ch = c;
for (i = 0; s[i]; ++i) if (s[i] == ch) break;
return i;
}
long long str_rchr(const char *s, int c) {
long long i, u = -1;
char ch = c;
for (i = 0; s[i]; ++i) if (s[i] == ch) u = i;
if (u != -1) return u;
return i;
}
int str_diff(const char *s, const char *t) {
register char x;
for (;;) {
x = *s; if (x != *t) break; if (!x) break; ++s; ++t;
x = *s; if (x != *t) break; if (!x) break; ++s; ++t;
x = *s; if (x != *t) break; if (!x) break; ++s; ++t;
x = *s; if (x != *t) break; if (!x) break; ++s; ++t;
}
return ((int)(unsigned int)(unsigned char) x)
- ((int)(unsigned int)(unsigned char) *t);
}
int str_start(const char *s, const char *t) {
char x;
for (;;) {
x = *t++; if (!x) return 1; if (x != *s++) return 0;
x = *t++; if (!x) return 1; if (x != *s++) return 0;
x = *t++; if (!x) return 1; if (x != *s++) return 0;
x = *t++; if (!x) return 1; if (x != *s++) return 0;
}
}
|