• Create Account

## reading how many words there are in a file

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

8 replies to this topic

### #1da_cobra  Members

122
Like
Likes
Like

Posted 20 October 2001 - 09:39 PM

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

### #2DarkAvenger  Members

122
Like
Likes
Like

Posted 20 October 2001 - 10:24 PM

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 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 !

Edited by - DarkAvenger on October 21, 2001 5:29:50 AM

### #3da_cobra  Members

122
Like
Likes
Like

Posted 21 October 2001 - 03:52 AM

hey thanx works now

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

should''ve been

thanx alot!!!!

### #4da_cobra  Members

122
Like
Likes
Like

Posted 21 October 2001 - 04:53 AM

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 ;
{
cerr << "File " << file << " could not be opened." << endl ;
}
do
{
strcat(word, chr) ;
cout << word ;
*word++ ;
}
while (chr!=''\n'') ;
}

again thanx in advance for any1 who can help me again

### #5Oluseyi  GDNet+

2076
Like
Likes
Like

Posted 21 October 2001 - 05:16 AM

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

### #6da_cobra  Members

122
Like
Likes
Like

Posted 21 October 2001 - 07:14 AM

ok solved my problem now

thanx to any1 that helped me

### #7Dactylos  Members

122
Like
Likes
Like

Posted 21 October 2001 - 07:32 AM

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.

### #8Oluseyi  GDNet+

2076
Like
Likes
Like

Posted 21 October 2001 - 03:29 PM

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

122
Like
Likes
Like

Posted 21 October 2001 - 04:55 PM

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."

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.