Credo di avere capito ciò che cercavi, io ho risolto il problema in un modo molto più semplice. Guarda se va bene:

#include <stdio.h>
#include <stdlib.h>
#define SIZE 5

void visualizza(char stringa[]);
main()
{
char stringa[SIZE];


printf("Inserire la stringa dei caratteri: ");
scanf("%s", stringa);

visualizza(stringa);

printf("\n");
system("pause");

}
void visualizza(char stringa[])
{
int i, j;

for(i = 0; stringa[i] != '\0'; i++) {
;
for(j = (i+1); stringa[j] != '\0'; j++)
printf("%c,%c\n", stringa[i], stringa[j]);
}
}


Da quello che ho visto nel tuo post visualizza() restituisce lo stesso output. Io ho messo il contattore 'j' ad un valore di 'i+1' ed entrambi terminano quando incontrano il carattere '\0'.
Fammi sapere se è quello che cercavi.

Saluti. Matteo