Если вы имеете в виду, получить уникальные символы из двух строк и сохранить их в новую строку, попробуйте этот код;
Сначала вы должны выделить память для str. В вашем коде str не указывает на выделенную область памяти, поэтому вы, вероятно, получите ошибку сегментации.
int contains(const char * str,char c)
{
for (int i = 0; i < strlen(str); ++i)
if(str[i] == c)
return 1;
return 0;
}
char * my_union(char *a, char*b)
{
char * res = (char*)malloc(sizeof(char)*(strlen(a) + strlen(b)));
int pushed = 0;
for (int i = 0; i < strlen(a); ++i)
{
if(!contains(res,a[i])){
res[pushed] = a[i];
pushed++;
}
}
for (int i = 0; i < strlen(b); ++i)
{
if(!contains(res,b[i])){
res[pushed] = b[i];
pushed++;
}
}
return res;
}
int main(int argc, char const *argv[])
{
char string1[9] = "abcdefgh";
char string2[9] = "abegzygj";
char * result = my_union(string1,string2);
printf("%s\n", result);
return 0;
}
Кроме того, не забудьте освободить возвращаемое значение my_union после того, как вы покончили с ним.