reading how many words there are in a file
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
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
I hope it works !
[EDIT] Added some comments
Edited by - DarkAvenger on October 21, 2001 5:29:50 AM
#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!!!!
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
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 (&).
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
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
quote: Original post by Oluseyistrcat(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
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."
-----------------------------"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
Popular Topics
Advertisement