reading how many words there are in a file

Started by
7 comments, last by da_cobra 22 years, 5 months ago
I have a file named "words.txt" and in that file I have : classroom words program now I want to read that file and find out how many words there are in that file ,for debugging I put a "cout << chr " in the loop so I can see what the program reads. now hen I run my program the screen is filled with "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy" whats wrong?!? // testing file i/o #include #include int read_words(const char *file) ; void main() { const char *file = "words.txt" ; int words = read_words(file) ; cout << words << endl ; } int read_words(const char *file) { int counter = 0 ; char chr ; ifstream read_file(file) ; if (!read_file) { cerr << "File " << file << " could not be opened." << endl ; } do { do { read_file >> chr ; cout << chr ; } while (chr!=''/n'') ; counter++ ; } while (!read_file) ; return counter ; } thanx in advance for any1 who can help me
Advertisement
Hmm, I think this code should work. It isn't perfect; for instance, if you have no words whatsoever then it will say 1 etc. But I'll leave that for you to fix

      #include <fstream.h>int read_words(const char *file) ;void main(){const char *file = "words.txt" ;int words = read_words(file) ;cout << words << endl ;}int read_words(const char *file){int counter = 0 ;int p = 0;char chr;ifstream read_file(file) ;if (!read_file){cerr << "File " << file << " could not be opened." << endl ;}/* Basically, just read all the characters from the file, and if a blank is detected, then increase the counter */do{// Read the character from the fileread_file.get(chr);cout << chr ;// If there is a blank spaceif (chr == ' ')	counter++ ; // Increase our counter by 1} while (!read_file.eof ()) ;read_file.close ();return counter + 1;}      


I hope it works !

[EDIT] Added some comments

Edited by - DarkAvenger on October 21, 2001 5:29:50 AM
hey thanx works now

so I guess my biggest mistake was (although it should work?!?)

read_file >> chr ;

should''ve been

read_file.get(chr) ;

thanx alot!!!!
ok, why can''t a copy a char from a file to another char string
with this, I get the following error :

error C2664: ''strcat'' : cannot convert parameter 2 from ''char'' to ''const char *''

void new_word(char *word, int words, const char *file)
{
int counter=0 ;
char chr ;
char temp ;
ifstream read_file(file) ;
if (!read_file)
{
cerr << "File " << file << " could not be opened." << endl ;
}
do
{
read_file >> chr ;
strcat(word, chr) ;
cout << word ;
*word++ ;
}
while (chr!=''\n'') ;
read_file.close() ;
}

again thanx in advance for any1 who can help me again
strcat expects a string, not a character. You can either typecast your chr to (char *) or pass its address using the address-of operator (&).
strcat(word, (char *)chr);OR  strcat(word, &chr); 

One of them will probably puke, but you''ll figure that out.


To you it''s a Bently, to me it''s a blue car...
"Diddy"
P.Diddy
ok solved my problem now

thanx to any1 that helped me
quote:Original post by Oluseyi
strcat(word, (char *)chr);OR    strcat(word, &chr);  

One of them will probably puke, but you''ll figure that out.

My guess is that both of them will puke sooner or later. strcat expects a zero-terminated string as it''s second argument, neither of the above will provide that.

da_cobra: You should look into using std::string. It is much better than char-arrays when you need to do alot of string manipulation.
Dactylos: good point, and very good advice. I''ll just add for everyone''s benefit that you can get a C-style string from an std::string by using its c_str() member function.

And now, go browse your help files...


To you it''s a Bently, to me it''s a blue car...
"Diddy"
P.Diddy
You count the number of spaces +1 to find out the number of words.


-----------------------------
"There are ones that say they can and there are those who actually do."

"...u can not learn programming in a class, you have to learn it on your own."

-----------------------------"There are ones that say they can and there are those who actually do.""...u can not learn programming in a class, you have to learn it on your own."

This topic is closed to new replies.

Advertisement