Archived

This topic is now archived and is closed to further replies.

da_cobra

reading how many words there are in a file

Recommended Posts

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

Share this post


Link to post
Share on other sites
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 file

read_file.get(chr);
cout << chr ;

// If there is a blank space

if (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

Share this post


Link to post
Share on other sites
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!!!!

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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."

Share this post


Link to post
Share on other sites