I'm trying to paste two strings together. I know you can do it faster but I'm not allowed to use build-in functions. I allocate memory for string3 and in main the memory should be released but it is not. I'm not allowed to change anything in main. What am I doing wrong?
Allocating memory happens here:
char *string_cat( char const *string1, char const *string2 )
{
int lengte1 = string_length(string1);
int lengte2 = string_length(string2);
int totaal_lengte = lengte1+lengte2;
char *string3 = (char*) malloc(totaal_lengte*sizeof(char));
int i = 0;
int j = 0;
while(string1[i] != '\0'){
string3[j] = string1[i];
i++;
j++;
}
i = 0;
while(string2[i] != '\0'){
string3[j] = string2[i];
i++;
j++;
}
return string3;
}
Freeing memory happens here:
int main( int argc, char **argv )
{
char *str;
printf( "== string_cat ==\n" );
check( strcmp( ( str = string_cat( "", "" ) ) == NULL ? "" : str, "" ) == 0, __FILE__, __LINE__ ); free( str );
check( strcmp( ( str = string_cat( "", "abcdef" ) ) == NULL ? "" : str, "abcdef" ) == 0, __FILE__, __LINE__ ); free( str );
check( strcmp( ( str = string_cat( "a", "bcdef" ) ) == NULL ? "" : str, "abcdef" ) == 0, __FILE__, __LINE__ ); free( str );
check( strcmp( ( str = string_cat( "ab", "cdef" ) ) == NULL ? "" : str, "abcdef" ) == 0, __FILE__, __LINE__ ); free( str );
check( strcmp( ( str = string_cat( "abc", "def" ) ) == NULL ? "" : str, "abcdef" ) == 0, __FILE__, __LINE__ ); free( str );
check( strcmp( ( str = string_cat( "abcd", "ef" ) ) == NULL ? "" : str, "abcdef" ) == 0, __FILE__, __LINE__ ); free( str );
check( strcmp( ( str = string_cat( "abcde", "f" ) ) == NULL ? "" : str, "abcdef" ) == 0, __FILE__, __LINE__ ); free( str );
check( strcmp( ( str = string_cat( "abcdef", "" ) ) == NULL ? "" : str, "abcdef" ) == 0, __FILE__, __LINE__ ); free( str );
return 0;
}