各ファイルの最初の行、次に各ファイルの 2 行目などを印刷しようとしています。
getline = EOF の場合、そのファイルは閉じられ、filesAreOpen はデクリメントされますが、プログラムは永久にループします。
void PrintLines(ifstream files[], size_t count)
{
string s;
ifstream *end, *start;
int filesAreOpen = count;
//continue while filesAreOpen > 0
while(filesAreOpen)
{
}
}