One problem is that CTRL-C is not sent as a normal keystroke like most other CTRL-key combinations, that's because CTRL-C is the break signal and is handled specially by the console to send a special break signal to your application, and if your application doesn't handle it then it will be terminated. Another problem is that input from the console is normally line-based, and you only get input once the user has pressed the newline or Enter key.
A possible solution for the first problem is to use the SetConsoleCtrlHandler
function to set a handler function to catch the signal, and in the handler tell the application that CTRL-C has been pressed.
A solution for the both problems is to change the console mode to not process CTRL-C, and to disable the line based input.
Also note that normally CTRL-C is used to copy selected content to the clipboard and not from, which is usually CTRL-V.
But handling of the keystrokes is only a small part of the problem, as you then have to work with the clipboard for the actual copy-pasting.