// // Example 9.5. Program to make a copy of a file, // removing multiple blanks // Files: EX0905.dat - input file of characters // EX0905ot.dat - output file that is a copy of EX0905.dat // with multiple blanks replaced by one blank // #include #include int main(void) { void RemoveBlanks(ofstream&, ifstream&); ifstream infile("EX0905.dat"); assert(infile); ofstream outfile("EX0905ot.dat"); assert(outfile); RemoveBlanks(outfile, infile); return 0; } // // Function to copy an input file to an output file, // removing multiple blanks // Pre: outfile is an ofstream output file stream. // infile is an ifstream input file stream. // Post: The input file has been copied to the output // file with multiple blanks replaced by one blank. // void RemoveBlanks(ofstream& outfile, ifstream& infile) { char NewChar, // character to read and write PrevChar; // previous character // copy first character if the input file is not empty if (infile.get(NewChar)) { outfile << NewChar; PrevChar = NewChar; } // copy the rest of the file, but do not copy a blank // if the previous character was a blank while (infile.get(NewChar)) { if (!(NewChar == ' ' && PrevChar == ' ')) outfile << NewChar; PrevChar = NewChar; } assert(infile.eof()); }