September 16, 2002 No end in sight! | ||||
---|---|---|---|---|
| ||||
Can someone explain why this code does not count the last character of a file? How would I go about correcting it? If there is a better way of doing it I would appreciate that advice also! To Pavel: Will all the ctype functions be supported in stream.d? I couldn't use both ctype and stream because the two conflict with each other. Thanks in advance, Andrew import stream; int main (char[][] args) { int t_num = 0; int t_ltr = 0; int t_punct = 0; int t_space = 0; int t_char = 0; File file = new File; file.open("edit1.txt"); char ch; assert(file.readable); while(!file.eof()) { file.scanf("%c", &ch); ++t_char; if ((ch >= "A" && ch <= "Z") || (ch >= "a" && ch <= "z")) { ++t_ltr; } else if (isdigit(ch)) { ++t_num; } else if (iswhite(ch)) { ++t_space; } else { ++t_punct; } } file.close(); printf("There are %d numbers,\n", t_num); printf("%d letters, %d punctuation marks,\n", t_ltr, t_punct); printf("and %d spaces for a total of %d characters.\n", t_space, t_char); return 0; } |
October 17, 2002 Re: No end in sight! | ||||
---|---|---|---|---|
| ||||
Posted in reply to Andrew Edwards | "Andrew Edwards" <crxace13@comcast.net> wrote in message news:am5eqf$2u0n$1@digitaldaemon.com... > Can someone explain why this code does not count the last character of a file? How would I go about correcting it? If there is a better way of doing it I would appreciate that advice also! > <SNIP> > > File file = new File; > file.open("edit1.txt"); > char ch; > assert(file.readable); > while(!file.eof()) You need to do a read on the file before eof() works? That is what causes this kind of trouble in C... -- Stijn OddesE_XYZ@hotmail.com http://OddesE.cjb.net _________________________________________________ Remove _XYZ from my address when replying by mail |
Copyright © 1999-2021 by the D Language Foundation