First, define "nothing happens"... do you see any output at all?
The eof test should not be used to control the loop these things are problematic when used in such a way. Several versions of the get function return a reference to the stream/file that can be tested directly to determine whether or not a value was read from said stream/file. I would suggest something more like this for the copyfiles function:
Code:void copyfiles(ifstream& copyfrom, ofstream& copyto) { char date; while( !copyfrom.get(date) ) { copyto.put(date); } return; }