workshit/src/string_compare_guy.c

52 lines
1.1 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
// string_compare_guy compares the contents of the left hand side, length with the contents of the
// right hand side, length and returns 1 if the right hand side (needle) is inside the left hand
// side (haystack).
static int string_compare_guy(char* lhs, int llength, char* rhs, int rlength) {
char* lnz = alloca(llength + 1);
memcpy(lnz, lhs, llength);
lnz[llength] = 0;
char* rnz = alloca(rlength + 1);
memcpy(rnz, rhs, rlength);
rnz[rlength] = 0;
int result = (intptr_t) strstr(lnz, rhs);
return result;
}
int main() {
int retcode = 0;
printf("Comparing foo and bar\n");
if(string_compare_guy("foo", 3, "bar", 3)) {
retcode++;
printf("failure\n");
} else {
printf("passed\n");
}
printf("trying to find foobar in foo\n");
if(string_compare_guy("foo", 3, "foobar", 6)) {
retcode++;
printf("failure\n");
} else {
printf("passed\n");
}
printf("trying to find foo in foobar\n");
if(string_compare_guy("foobar", 3, "foo", 6)) {
printf("passed\n");
} else {
retcode++;
printf("failure\n");
}
return retcode;
}