Ci sono degli errori di "base" di conoscenza della sintassi del linguaggio ma anche logici ...
Intanto, nel main, dichiari un char e non un array di char. La dimensione dovrebbe essere costante se non devi allocare dinamicamente l'array stesso e non ha senso inserire il "nome" dell'array da tastiera ... Inoltre, l'array deve essere inizializzato ... quindi
codice:
#define MAX 100
int main()
{
char array[MAX];
strcpy(array, "perche' non superi?");
sostituisci(array, strlen(array));
return 0;
}
Poi, la funzione deve accettare un array di caratteri, quindi un puntatore come primo parametro e, dato che e' un parametro, non devi dichiarare nuovamente l'array dentro la funzione ...
Il ciclo dovra' andare da 0 a d-1 (quindi <d) ... la if e' sbagliata ma la lascio a te e la return deve prevedere la lunghezza dell'array (con la strlen non la sizeof ...) con un valore restituito intero ...
codice:
int sostituisci(char *a, int d)
{
for(int i=0; i<d; i++)
{
if(a[i] == 'p' || 'e' || 'r') a[i]='x';
}
return strlen(a);
}