正文

[025] while((c=getchar())!='\n')2006-02-21 21:59:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/wentao/10345.html

分享到:

while ((c = getchar()) != '\n'); 

作用:从键盘输入字符,直到输入回车为止, 最后的分号为循环体,即一个空语句

等价于:
c = getchar();
while( c != '\n' )
    c = getchar();

当然也可用for语句实现,如:

for( ; (c = getchar()) != '\n' ; )
    printf("%c", c) ;

其作用是每读入一个字符后立即输出该字符,直到输入一个“换行”为止。注意:从终端键盘向计算机输入时,是在按Enter键以后才送到内存缓冲区中去的。不是从终端敲入一个字符马上输出一个字符,而是按下Enter键后数据送入内存缓冲区,然后每次从缓冲区读一个字符,再输出该字符。

#include <stdio.h>
int main()
{
    char c;
    for( ; (c = getchar()) != '\n' ; )
        printf("%c", c) ;
    return 0;
}

运行结果:
====================
afdasdfkjffl&%#$879e↙
afdasdfkjffl&%#$879e
====================

用while语句实现如下:
#include <stdio.h>
int main()
{
    char c;
    c = getchar();
    while( c != '\n' )
    {
        printf("%c", c);
        c = getchar();
    }
    return 0;
}

可以把循环体和一些与循环控制无关的操作也作为for语句的“括号内条件语句”,这样程序可以短小简洁。但过分利用这一特点会使for语句显得杂乱,可读性降低,建议不要把与循环控制无关的内容放到for 语句中。

---------------------------------------

练个题:《C程序设计》(谭) P120  6.2

输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。

#include <stdio.h>
int main()
{
    char c;
    int letter = 0, digit = 0, space = 0, other = 0;
    printf("Enter some characters:\n");
    while((c = getchar()) != '\n')
    {
    if(c >= 'a' && c <= 'z' || c>= 'A' && c <= 'Z')
        letter++;
    else if(c == ' ')
        space++;
        else if(c >= '0' && c <= '9')
            digit++;
            else
                other++;
    }
    printf("letter:%d, space:%d, digit:%d, other:%d\n", letter, space, digit, other);
    return 0;
}

运行结果(VC):
===================================================
Enter some characters:
asdf#4094l lfdslkf[30 lkdf]30- 093odf↙
letter:19, space:3, digit:11, other:4
===================================================



 

阅读(7220) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册