Se ho capito, intendi dire che la open

FILE *fp=fopen(filenameopen,"rb+");

fallisce?

Hai controllato il valore della filenameopen in modalita' debug (passo passo) prima che venga passata alla fopen ?

E inoltre, prova a scrivere subito dopo la fopen

int le = GetLastError();

e mostra il valore della le dopo la chiamata.