A prima vista esce un crash.
file.read((char*) &prova,100); //cosa vuol dire questo (char*)??
La riga dev'essere:
codice:
file.read(prova,100);
perché prova è già un array di caratteri.

Il cast a char* si rende necessario quando il parametro non è di tipo char*. Ad esempio una struttura.

codice:
struct alpha {
...
...
};

alpha aph;

file.read((char*)&aph,sizeof(alpha));