When -r is set, it does output control characters, but then it is no longer possible to determine when the text wraps to a new line on the display, so the display may not be accurate in all cases. You probably have the -w flag set in your LESS environment variable or in your lesskey file. The meaning of the -w flag changed in version 346. Unfortunately, this is done differently on different systems, so you'll have to check the documentation for your system. You can make it quit as soon as it reaches the end of the file by using the -E option.
Many programs react to control-C by just quitting.
For example, in less you can use control-C to stop a long search, or to stop the F command, without quitting the program. This is usually because your .cshrc file contains many commands. Csh executes the commands in .cshrc each time less starts a subshell. If you only need these commands executed once at login, and not in every subshell, you can move them to .login instead of .cshrc. Like some other programs, less invokes the shell to perform certain operations, such as expanding special characters in filenames.