Hi there, I have been lurking around these forums for awhile, but this is my first post. I'm stuck on an assignment that requires me to determine how many words are in a file by reading one character at a time. I am not allowed to use string to count words, as that was the previous assignment which I have already done succesfully.
My problems are: I am off by 1 on the count, but only in some files, and if I put curly braces around the imbedded if statement, the loop will not quit. Also making me unable to add an else if statement. I beleive if I was able to use the if statements like I want to I could correct the count issue easily.
Here is an example of file1, which should have 7 words, but my program displays as 6.
"
This &%file should!!,...
have exactly 7 words.
"
Here is file5, which my program calculates the correct amount of words, 22.
"
Mr. &%Brown can moo!!,...
'
can you? This file should have several blank lines before the end of the file.
22 words.
"
Code:
#include <fstream>
#include <iostream>
#include <cassert>
#include <cstring>
using namespace std;
int main()
{
string aString;
char prevChar;
char currChar;
int count = 1;
ifstream inFile;
cout << "Please enter the name of the file you " << endl;
cout << "would like to count: ";
cin >> aString;
do
{
if (aString == "Q" || aString == "q")
{
return 0;
}
inFile.open(aString.c_str());
assert(inFile);
inFile.get(prevChar);
inFile.get(currChar);
while (inFile)
{
if (prevChar == ' ' && currChar != ' ')
count++;
prevChar = currChar;
inFile.get(currChar);
}
inFile.close();
inFile.clear();
cout << "This file has " << count << " words." << endl;
cout << prevChar << endl << currChar << endl;
count = 1;
cout << "***********************" << endl;
cout << "Please enter the name of the file you " << endl;
cout << "would like to count (Type Q to quit): ";
cin >> aString;
}
while (inFile);
return 0;
}