so risponderti solamente alla prima tua domanda in quanto non conosco direttive c per armeggiare con le dir.
codice:
...
char nome;
...
scanf(nome,%c)
...
//controllo se esiste già
if(((in=fopen(nome, "r"))==NULL){
printf("vado a creare il file 1.txt perchè non esiste\n");
if(((out=fopen(nome, "w"))==NULL){
printf("Errore nella creazione\n");
exit(1);
}
}
else
{
//creo un file con nome alternativo
//se esiste già il file
nome=random();
if(((out=fopen(nome, "w"))==NULL){
printf("Errore nella creazione\n");
exit(1);
}
}
in out hai aperto lo stream per scrivere
in in hai aperto lo stream per leggere