| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 723 人关注过本帖
标题:小弟又来了,求帮助。。。
只看楼主 加入收藏
gerald1236
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2012-7-8
结帖率:16.67%
收藏
已结贴  问题点数:10 回复次数:8 
小弟又来了,求帮助。。。
请问各位大神,这样的程序怎么样才能输出结果啊。。。好像一直在输入啊。。。
#include<stdio.h>
#define IN 1
#define OUT 2
int main()
{
    int c,n1,nw,nc,state;
    state=OUT;
    n1=nc=nw=0;
    while((c=getchar())!=EOF)
    {
        ++nc;
        if(c=='\n')
            ++n1;
        if(c==' '||c=='\t'||c=='\n')
            state=OUT;
        else if(state==OUT)
        {
            state=IN;
            ++nw;
        }
    }
    printf("%d %d %d",nc,nw,n1);
}


[ 本帖最后由 gerald1236 于 2012-7-18 14:50 编辑 ]
搜索更多相关主题的帖子: include 
2012-07-18 14:29
longlongbc1
Rank: 2
等 级:论坛游民
帖 子:2
专家分:18
注 册:2012-7-18
收藏
得分:2 
while((c=getchar())!=EOF)
首先EOF是什么,再有c是int型,getchar()得到的是char型,类型不符,不知道是不是这几个地方出错了!
2012-07-18 14:59
gerald1236
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2012-7-8
收藏
得分:0 
回复 2楼 longlongbc1
不是啦,呵呵~
2012-07-18 15:00
xinsuifeng
Rank: 2
等 级:论坛游民
帖 子:16
专家分:72
注 册:2012-7-2
收藏
得分:2 
这个看是不是你要想表达的意思:
#include<stdio.h>
 #define IN 1
 #define OUT 2
 int main()
 {
     int n1,nw,nc,state;
     char c;
     state=OUT;
     n1=nc=nw=0;
     while((c=getchar())!='\n')
     {
         ++nc;
         if(c=='\n')
             ++n1;
         if(c==' '||c=='\t'||c=='\n')
             state=OUT;
         else if(state==OUT)
         {
             state=IN;
             ++nw;
         }
     }
     printf("%d %d %d",nc,nw,n1);
 }
2012-07-18 17:09
gerald1236
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2012-7-8
收藏
得分:0 
回复 4楼 xinsuifeng
不是~这个问题主要在于EOF是如何输入,让这个程序进入输出。。。
2012-07-19 11:15
无聊恢恢
Rank: 2
等 级:论坛游民
帖 子:21
专家分:20
注 册:2012-7-19
收藏
得分:2 
你是不是想连续输入 然后再通过判断输出结果?
如果是这样的话就把   EOF  改成一个 字符 例如:‘#’
2012-07-19 11:38
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:2 
linux中 Control+D
win中 control+z (不确定)

The quieter you become, the more you can hear
2012-07-21 06:48
lei1949
Rank: 1
等 级:新手上路
帖 子:2
专家分:2
注 册:2012-7-21
收藏
得分:2 
#include<stdio.h>
#define IN 1
#define OUT 2
int main()
{
    int c,n1,nw,nc,state;
    state=OUT;
    n1=nc=nw=0;
    while((c=getchar())!=EOF)
    {
        ++nc;
        if(c=='\n')
            ++n1;
        if(c==' '||c=='\t'||c=='\n')
            state=OUT;
        else if(state==OUT)
        {
            state=IN;
            ++nw;
        }
        printf("%d %d %d",nc,nw,n1);
    }
   
}


这样就可以了,你把输出的语句放在了循环体之外,当然就一直输入
2012-07-21 08:53
lei1949
Rank: 1
等 级:新手上路
帖 子:2
专家分:2
注 册:2012-7-21
收藏
得分:0 
EOF不是特殊字符,而是一个定义在头文件stdio.h的常量,一般等于-1。

  #define EOF (-1)


我觉得可以这样:
int c;

  while ((c = fgetc(fp)) != EOF)
   {

    do something

  }


2012-07-21 09:40
快速回复:小弟又来了,求帮助。。。
数据加载中...
 
   



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

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