Jump to content

  • Log In with Google      Sign In   
  • 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.

  • You cannot reply to this topic
8 replies to this topic

#1 da_cobra   Members   -  Reputation: 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

Sponsor:

#2 DarkAvenger   Members   -  Reputation: 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 <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

#3 da_cobra   Members   -  Reputation: 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?!?)

read_file >> chr ;

should''ve been

read_file.get(chr) ;

thanx alot!!!!

#4 da_cobra   Members   -  Reputation: 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 ;
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

#5 Oluseyi   Staff Emeritus   -  Reputation: 1678

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

#6 da_cobra   Members   -  Reputation: 122

Like
Likes
Like

Posted 21 October 2001 - 07:14 AM

ok solved my problem now

thanx to any1 that helped me

#7 Dactylos   Members   -  Reputation: 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.


#8 Oluseyi   Staff Emeritus   -  Reputation: 1678

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

#9 cMADsc   Members   -  Reputation: 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.



PARTNERS