Witam,
mam problem z niżej przedstawionym zadaniem.
**
Napisać funkcję posiadającą dwa parametry typu char*. Argumentami funkcji mają być tablice o elementach typu char zawierające ciągi znaków zakończone zerem. Funkcja powinna przydzielić pamięć, w której umieści kolejno: ciąg znaków znajdujący się w pierwszej tablicy, znak odstępu, ciąg znaków znajdujący się w drugiej tablicy, zero. Funkcja ma zwrócić wskaźnik wskazujący przydzieloną pamięć. Napisać program demonstrujący działanie funkcji.**
Napisałem mianowicie coś takiego:
#include <stdio.h>
#include <stdlib.h>
int concatenation(char *firstTab, char *secondTab)
{
char *concatenationTab;
int nrWords=1;
for(int i=0;;i++)
{
if((*(firstTab+i) !='\0') && (*(secondTab+i) != '\0'))
{
nrWords+=2;
}
else if((*(firstTab+i) !='\0') || (*(secondTab+i) != '\0'))
{
nrWords++;;
}
else{
break;
}
}
printf("%d\n",nrWords);
concatenationTab = malloc(nrWords*sizeof(char));
int pom=-1;
for(int i=0; ;i++)
{
if((*(firstTab+i) !='\0') && (pom == -1))
{
*(concatenationTab+i) = *(firstTab+i);
}
else if((*(firstTab+i) =='\0') && (pom == -1))
{
pom=0;
*(concatenationTab+i)=' ';
}
else if(*(secondTab+pom) !='\0')
{
*(concatenationTab+i) = *(secondTab+pom);
pom++;
}
else if(*(secondTab+pom) =='\0')
{
break;
}
}
printf("\nsprawdzenie0 = %c ",*concatenationTab);
printf("\nsprawdzenie1 = %d ",&concatenationTab);
printf("\nsprawdzenie2 = %d ",concatenationTab);
return concatenationTab;
}
int main()
{
char tab[20]="ten";
char tab1[20]="teges";
char *tabela;
tabela = concatenation(tab,tab1);
for(int i=0; tabela[i] != '\0' ; i++)
{
printf("\n%c", tabela[i]);
printf("\nsprawdzenie3 = %d ",&tabela[i]);
}
printf("koniec" );
return 0;
}
Nie jestem pewny tego rozwiązania bo mam wrażenie, że pomieszały mi się pojęcia wskaźnik, adres, wartość. Czy jest ktoś w stanie określić czy to zadanie jest poprawnie wykonane a w razie błędu podpowiedzieć mi w czym robię błąd?