Una possibile soluzione:

codice:
#include <stdio.h>
#include <ctype.h>

int main()
{
	int k, x, y;
	char c;
	char a[256];
	char str[55] = "Babbo";
	char str1[55];
	char str2[55];

	for ( k = 0; k < 256; k++ )
		a[k] = 0;

	k = 0;
	while ( 1 )
	{
		if ( str[k] == '\0' )
			break;
		c = tolower(str[k]);
		a[c] += 1;
		++k;
	}

	x = y = 0;
	for ( k = 0; k < 256; k++ )
	{
		if ( a[k] > 1 )
		{
			str1[x++] = k;
		}
		else if ( a[k] == 1 )
		{
			str2[y++] = k;
		}
	}
	str1[x] = '\0';
	str2[y] = '\0';

	printf("\n\nCaratteri multipli: %s\n", str1);
	printf("\n\nCaratteri singoli: %s\n", str2);

	return 0;
}
Una migliore soluzione, dal punto di vista della velocità di esecuzione, potrebbe essere quella di utilizzare un alberio binario di ricerca.