| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2357 人关注过本帖, 2 人收藏
标题:getchar()的问题
只看楼主 加入收藏
lythonmao
Rank: 1
等 级:新手上路
帖 子:14
专家分:7
注 册:2011-10-27
结帖率:75%
收藏(2)
已结贴  问题点数:10 回复次数:18 
getchar()的问题
//*题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
//1.程序分析:利用while语句,条件为输入的字符不为'\n'.
程序代码:
#include "stdio.h"
int main(void)
{
  int letters = 0, spaces = 0, digits = 0, others = 0;
  char c ;
  printf("please input some characters:\n");

  while ((c=getchar())!= '\n')
  {
    if (c >= 'a'&&c <= 'z' || c >= 'A'&&c <= 'Z')
        letters++;
    else if (c >= '0'&&c <= '9')
        digits++;
    else if (c == ' ')
        spaces++;
    else
        others++;


 
  }

printf("letters=%d,spaces=%d,digits=%d,others=%d",letters,spaces,digits,others);

return 0;
}
我在这儿要问的是
c = getchar();这个语句为什么不能从while语句中抽出来放在while语句前面,就是写成:
c =getchar();
while(c != '\n')
{
}
请问为什么不能这样写;
搜索更多相关主题的帖子: 分析 英文字母 
2011-11-10 20:00
dennisac
Rank: 2
等 级:论坛游民
帖 子:28
专家分:17
注 册:2011-10-27
收藏
得分:0 
那么循环体只会执行一次,也就是只会判断你输入的第一个字符。。。
2011-11-10 20:11
rptina
Rank: 2
等 级:论坛游民
帖 子:7
专家分:27
注 册:2011-10-24
收藏
得分:0 
c =getchar();赋值,只接受一个字符
while(c != '\n')只要不是‘\n’就是死循环,不会再做getchar()语句了
{
}
2011-11-10 20:12
xzqjjcc2011
Rank: 1
等 级:新手上路
帖 子:1
专家分:5
注 册:2011-11-10
收藏
得分:5 
可以把c=getchar();放到前面,但while循环最后要加上c=getchar();这句,否则只会读入第一个字符,就会形成死循环(如果第一个字符不是'\n')。
#include "stdio.h"
int main(void)
{
    int letters = 0, spaces = 0, digits = 0, others = 0;
    char c ;
    printf("please input some characters:\n");
   
    c=getchar();
    while (c != '\n')
    {
        if (c >= 'a'&&c <= 'z' || c >= 'A'&&c <= 'Z')
            letters++;
        else if (c >= '0'&&c <= '9')
            digits++;
        else if (c == ' ')
            spaces++;
        else
            others++;
        
        c=getchar();
    }
   
    printf("letters=%d,spaces=%d,digits=%d,others=%d",letters,spaces,digits,others);
   
    return 0;
}
2011-11-10 21:07
粉jj
Rank: 2
等 级:论坛游民
威 望:1
帖 子:123
专家分:82
注 册:2011-3-8
收藏
得分:0 
同意四楼

我刚好看到这儿
2011-11-11 11:18
lythonmao
Rank: 1
等 级:新手上路
帖 子:14
专家分:7
注 册:2011-10-27
收藏
得分:0 
再问一下:
char c;
c = getchar();

和下面的有什么不同??
char c;
scanf("%c",&c);
2011-11-12 12:25
kd83kdi93
Rank: 2
等 级:论坛游民
帖 子:65
专家分:52
注 册:2011-9-18
收藏
得分:0 
写在while前面就只能输入一次了  你这是统计
2011-11-12 13:54
pgyan
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2011-11-1
收藏
得分:0 
字符串不能这样输入的吧?char c;
scanf("%c",&c);字符串不能这样输入的吧?我也是刚学。。。
2011-11-12 14:12
dx19880910
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-11-12
收藏
得分:0 
回复 5楼 粉jj
使用getchar()空格 换行符什么的都会被读取,使用scanf时跳过换行符
2011-11-12 14:21
lythonmao
Rank: 1
等 级:新手上路
帖 子:14
专家分:7
注 册:2011-10-27
收藏
得分:0 
既然c = getchar();只能接收一个字符;为什么我执行程序时,可以一次性输入好多的字符,
而不是输入一个字符后,执行程序结束。
2011-11-12 17:07
快速回复:getchar()的问题
数据加载中...
 
   



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

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