Jump to content
  • Advertisement

Archived

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

da_cobra

reading how many words there are in a file

This topic is 6115 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

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

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!