Originariamente inviato da redpenguin
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
Ciao...
Anche io avrei voluto tanto farlo così il problema è che bisogna fare un programma con ricorsione, ossia devo rihiamare la funzione visualizza in se stessa.
L'errore che mi dava è che mi faceva visualizzare nn solo il carattere in poszione [i] ma anche i successivi.
e se al posto di %s mettevo %c mi dava dei risultati errati.
Grazie