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 ...