Mam za zadanko połączyć dwa łańcuchy tekstowe bez używania funkcji strcat. Napisałem funkcję i powstaje jeden połączony łańcuch ale na końcu pojawiają się losowe znaki. typu:
Ala ma kotariusz3-śKľő
Co może powodować takie coś?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char* sklej (char* n1, char* n2);
int main(){
char* napis1 = "Ala ";
char* napis2 = "ma kota";
char *kolejny;
printf("Dlugosc napis1 = %i\nDlugosc napis2= %i\n",strlen(napis1), strlen(napis2));
printf("Sklejony napis: %s\n", kolejny=sklej(napis1, napis2));
free(kolejny);
return 0;
}
char* sklej (char* n1, char* n2)
{
int rozmiar = strlen(n1) + strlen(n2);
char* napis3 = malloc(rozmiar*sizeof(char));
int dlugosc_pierwszego = 0, dlugosc_drugiego = 0;
int dlugosc_sklejonego;
for(dlugosc_pierwszego = 0 ; n1[dlugosc_pierwszego] != '\0'; dlugosc_pierwszego++)
{
napis3[dlugosc_pierwszego] = n1[dlugosc_pierwszego];
}
dlugosc_sklejonego = dlugosc_pierwszego;
for(dlugosc_sklejonego; n2[dlugosc_drugiego] != '\0'; dlugosc_drugiego++)
{
napis3[dlugosc_sklejonego] = n2[dlugosc_drugiego];
dlugosc_sklejonego++;
}
return napis3;
}