Funkce strpbrk() vrací pointer na první výskyt znaku, ne přímo ten znak. Takže to chtělo trochu upravit:
char znaky[] = "Nejaky testovany text I S VELKYMI PISMENY";
char hladaneZnaky[10] = "aeiouAEIOU";
char samohlasky[30];
char *nasiel;
int i = 0;
nasiel=strpbrk(znaky,hladaneZnaky);
while(nasiel!=NULL)
{
samohlasky[i++]=*nasiel;
nasiel=strpbrk(nasiel+1,hladaneZnaky);
}
samohlasky[i] = '\0'; // konec retezce
printf("samohlasky : %s\n",samohlasky);