char * strcat(char * str1, char * str2) { int l1 = strlen_2(str1); int l2 = strlen_2(str2); char * ret = malloc(l1+l2+1); for(int i = 0; i < l1+l2; i++) { if(i < l1) ret[i] = str1[i]; else ret[i] = str2[i - l1]; } ret[l1+l2] = '\0'; return ret; }
bool strend(char s[], char t[]) { bool check = false; //int tempsize = strlen_2(s) - strlen_2(t); for (int i = 0; i <(strlen_2(s) - strlen_2(t)); i++) { if (s[i + strlen_2(s) - strlen_2(t)] != t[i]) { bool check = false; return (check); } else { check = true; } } return (check); }
int contains(char * string1, char * string2) { int s1l = strlen_2(string1); int s2l = strlen_2(string2); if(s1l < s2l) { return 0; } for(int i = 0; i <= s1l - s2l; i++) { if(s1l - i < s2l) break; if(string1[i] == string2[0]) { for(int j = 0; j < s2l; j++) { if(! string1[i + j] == string2[j]) break; if(j == s2l -1) return 1; } } } return 0; }
char * strdup(char * source) { int len = strlen_2(source); char * dest = malloc(sizeof(char) * (len + 1)); for(int i = 0; i < len; i++) { dest[i] = source[i]; } dest[len] = '\0'; return dest; }
int main() { clock_t start, end; int i = 0; char s[1000001]; while (i < 1000000) { s[i++] = 's'; } s[i] = '\0'; start = clock(); strlen(s); end = clock(); printf("%f\n", (end-start)/(double)CLOCKS_PER_SEC); start = clock(); strlen_1(s); end = clock(); printf("%f\n", (end-start)/(double)CLOCKS_PER_SEC); start = clock(); strlen_2(s); end = clock(); printf("%f\n", (end-start)/(double)CLOCKS_PER_SEC); start = clock(); strlen_3(s); end = clock(); printf("%f\n", (end-start)/(double)CLOCKS_PER_SEC); start = clock(); strlen_4(s); end = clock(); printf("%f\n", (end-start)/(double)CLOCKS_PER_SEC); start = clock(); strlen_5(s); end = clock(); printf("%f\n", (end-start)/(double)CLOCKS_PER_SEC); return 0; }