Some nits:


Code:
int openFile(fstream& outFile, fstream& inFile1, fstream& inFile2)
There appears to be no reason to pass these variables into the function, unless you plan on removing the call to readWriteData and placing it after the call to openFile in the main function later on. It's not hurting anything... but there is no real reason for it as your program currently stands. Looks like these variables can be made local to the function.



Code:
char outName[50];//storage of user input filename for the data file that is to be written to
char inName1[50];//storage of user input filename for the first data file that is to be read from
char inName2[50];//storage of user input filename for the second data file that is to be read from
    
cout << "Please type the name of the first input file, including the extension: ";//requests user input of filename
cin >> inName1;
cout <<'\n';
inFile1.open(inName1, ios::in);
You should prefer the use of strings here versus character arrays, you won't have to worry about potentially storing more than the array is capable of holding:
Code:
string outName;//storage of user input filename for the data file that is to be written to
string inName1;//storage of user input filename for the first data file that is to be read from
string inName2;//storage of user input filename for the second data file that is to be read from
    
cout << "Please type the name of the first input file, including the extension: ";//requests user input of filename
cin >> inName1;
cout <<'\n';
inFile1.open(inName1.c_str(), ios::in);



Code:
void readWriteData(fstream& outFile, fstream& inFile1, fstream& inFile2)
{
     string in1;
     string in2;
     string out;

     
     while(!inFile1.eof() && !inFile2.eof())
      {
           inFile1 >> in1;
           inFile2 >> in2;
           
             if (strlen(in1.c_str())  < strlen(in2.c_str()))
             {
                in1 = out;
                outFile << in1;
                inFile1 >> in1;
              }
              
              else
              {
                  in2 = out;
Where is out ever initialized?



Code:
if (strlen(in1.c_str())  < strlen(in2.c_str()))
The string container provides a handy length member function to replace this.
Code:
if ( in1.length()  < in2.length() )