| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4537 人关注过本帖
标题:如何用EOF判断文件是否结束,我的程序哪里错了
只看楼主 加入收藏
WJHHHH
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-1-19
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
如何用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;
}
搜索更多相关主题的帖子: include 字符串 如何 字母 
2016-03-01 15:54
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
这EOF和n有啥关系啊

 while(cin>>n,n!=EOF)

DO IT YOURSELF !
2016-03-01 16:03
WJHHHH
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-1-19
收藏
得分:0 
回复 2楼 wp231957
那我该怎么写
2016-03-01 18:14
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
while(cin>>n,n!=EOF)改为while(cin>>n),题目中说的恰恰是错误用法
另外,你的那两个if判断条件有点儿奇葩。手机打字不方便,就不慢慢写了
2016-03-01 19:17
WJHHHH
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-1-19
收藏
得分:0 
我的新程序  为什么数字多算了一个?
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
    char n;
    int s=0;
    int t=0;
    ifstream fi("chardigit.in");
    ofstream fo("chardigit.out");
    while(!fi.eof())
    {
        fi>>n;
        if((n>='A'&&n<='Z')||(n>='a'&&n<='z'))
            s++;
        else if(n>='0'&&n<='9')
            t++;
    }
    fo<<s<<endl;
    fo<<t;
    return 0;
}
2016-03-01 19:20
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
回复 5楼 WJHHHH
4楼才说过“题目中说的恰恰是错误用法”
2016-03-01 22:04
WJHHHH
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-1-19
收藏
得分:0 
那我该怎么写    老师没讲    说这道题不对  但我想尝试一下
2016-03-02 19:02
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:20 
以下是引用WJHHHH在2016-3-2 19:02:22的发言:

那我该怎么写    老师没讲    说这道题不对  但我想尝试一下
在4楼已经跟你说过了呀“while(cin>>n,n!=EOF)改为while(cin>>n)”

程序代码:
#include <iostream>
#include <fstream>
using namespace std;

int main( void )
{
    ifstream fi( "chardigit.in" );
    ofstream fo( "chardigit.out" );

    size_t s=0, t=0;
    for( char n; fi>>n; )
    {
        if( (n>='A'&&n<='Z') || (n>='a'&&n<='z') )
            ++s;
        else if( n>='0'&&n<='9' )
            ++t;
    }
    fo << s << '\n' << t;

    fo.close();
    fi.close();
    return 0;
}

2016-03-03 08:31
快速回复:如何用EOF判断文件是否结束,我的程序哪里错了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015279 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved