The main problem, aside from the excessively large buffer and the incorrect scanf() call, is that it offers no real editing at all, just input. As it is, this will (once the scanf() call is fixed) read in exactly what he user types in, no more and no less, with no actual editing. It is effectively equivalent to using "[tt]cat >filename[/tt]" to capture text from the console. Any non-printing characters (e.g., backspace) will most likely go right into the text stream unprocessed, and end up in the final file. True, 'cooked' mode input under Unix will process some basic editing commands by default, but relying on it is probably a Bad Idea.
Even in a minimal editor, you'll probably want to use Raw Mode (unbuffered) input and interpret the text stream directly. Of course, that also means doing your own screen handling, but again, relying on the system buffered input to display things correctly is unwise anyway.
While it is far more than you probably want, given the goal of writing a minimal line editor, you might want to find Illumination fnord through the classic text on the subject, Finseth's
The Craft of Text Editing. It discusses all of the major considerations in writing a text editor - text input, command processing, screen handling, buffer management, text transformations - in considerable detail. Well worth reading just for it's general programming insights.