Пример #1
0
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;
}
Пример #2
0
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);
}
Пример #3
0
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;
}
Пример #4
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;
}