I've written a function called safecat
that adds one string (called ct
) to the end of another string (called s
).
The resulting new s
is then returned.
In the main function my task is to check if my function worked the intended way, and if so, then print the result of my function safecat
.
The problem I have is that when I assign the return value of safecat
to another char
-string (in this case str
) in my main function, the stuff in str
which comes from ct
is just garbage.
I don't understand where the problem is, if I just do printf("%s", safecat(s, ct));
I get the correct result.
Here you see my code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *safecat(char *s, const char *ct);
int main()
{
char s[] = "Twin";
const char ct[] = "Peaks";
char *str = safecat(s, ct);
if(str == NULL){
printf("Error in function!");
return 1;
}
printf("\n%s\n", str);
return 0;
}
char *safecat(char *s, const char *ct){
int i, k, j = 0;
int max_count = strlen(s) + strlen(ct) + 1;
for(i = strlen(s); i < max_count; i = i + sizeof(char)){
*(s + i) = (char *) malloc((strlen(s) + strlen(ct) + 1) * sizeof(char));
if(!(s + i)){
for(k = strlen(s) / sizeof(char); k < i; k++){
free(*(s + k));
}
return NULL;
}
*(s + i) = *(ct + j);
j++;
}
return s;
}
I think the error happens when I assign safecat
to str
.
When I print out str
I get "TwinP' a
" instead of "TwinPeaks
".
Thanks for helping!