Se dichiari un semplice char per il nome del file (un solo carattere ...) e' ovvio che avrai problemi ...
Il nome del file e' una stringa e quindi devi prevedere un array di char con un numero di caratteri adeguati per inserire il nome stesso (ne ho previsti una trentina) ...
char nome_file[30];
Fatto questo, dato che il nome di un array corrisponde all'indirizzo del suo primo elemento, la scanf sara'
scanf("%s", nome_file);
e la open
fp = open (nome_file, O_CREAT, 0666);
senza il carattere & in quanto gia' puntatore ...