Non-curses pager in C
Bug
You're code has a bug-ish. When using this, if instead of hitting enter when asked to enter a character you enter some other letter and then you press enter, then next newline will be skipped and you will have two lines merged into one:

Fooa
BarHello, World!
Spama
Eggs


where the text file was:

Foo
Bar
Hello, World!
Spam
Eggs


To be honest, I'm not quite sure which line this is occurring on, but I think it has something to do with the getchar() call; when I pressed a, the next line was printed out.
Bug #2
Using the same file as above but this time passing it through STDIN like so:
./a.out &lt; Foo

I got this as a result:

 Fooarello, World!pamggs


I didn't touch the keyboard at all; it just flew through the file. I don't think this is intended.
However, this time, I think I know why. It's this line:
getchar();

When the end of a line is reached, then this is called. However, since the file you are reading is from stdin and getchar() also reads from stdin, then this call is going to remove the next character from the file.
See the input again, but with the characters removed by getchar:

FoobarHello, World!spameggs

The bolded characters are the characters that appeared after each newline.