That could work, however you should first set the pixel unpack setting properly (using the PixelStore commands) and use an appropriate buffer format.
This means if you e.g. want to use tightly coupled RGB components captured as unsigned bytes then you need to declare your screen array as follows:
You should call glPixelStorei(GL_PACK_ALIGNMENT, 1) before glReadPixels if you use unsigned char screen[640 * 480 * 3]; because of alignment of each scanline.