如何用EOF判断文件是否结束,我的程序哪里错了
问题描述有一个由字符组成的文件,请输出其中字母的个数和数字的个数。
【输入格式】
输入文件由不多于10^6个字符组成(文件是否结束可用流对象的成员函数eof来判断,若为文件结束则返回值为非0值,例如cin.eof()或fin.eof()为真则表示文件结束).
【输出格式】
输出文件有两行,第一行是字符串中字母的个数;第二行是字符串中数字的个数。
【输入输出样例】
chardigit.in
dk!@#$f j87&^%^34-3
chardigit.out
4
5
我的程序
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
freopen("chardigit.in","r",stdin);
freopen("chardigit.out","w",stdout);
char n;
int s=0,t=0;
while(cin>>n,n!=EOF)
{
if('a'<=(char)(n)<='z'||'A'<=(char)(n)<='Z')
s=s+1;
if('1'<=(char)(n)<='9')
t=t+1;
}
cout<<s<<endl<<t;
return 0;
}