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;
}