getchar 与 putchar

原创 2006年06月02日 12:19:00

读 C Program Language 笔记

借助getchar与putchar函数,可以在不掌握其他输入输出知识的情况下编写出许多有用的代码。最简单的程序是一次一个字符地把输入复制到输出,其基本思想如下:

读一个字符
while ( 该字符不是文件结束指示符)
输出刚读进的字符
读下一个字符


下面是其C程序:
#include <stdio.h>
/* 用于将输入复制到输出的程序;第1个版本*/
main()
{
    int c;
    c = getchar();
    while  c != EOF) {
        putchar(c);
        c = getchar();
    }
}

像其他许多东西一样,一个字符不论在键盘或屏幕上以什么形式出现,在机器内部都是以位模式存储的。char类型就是专门用于存储这种字符数据的类型,当然任何整数类型也可以用于存储字符数据。由于某种微妙却很重要的理由,此处使用了int类型。

需要解决的问题是如何将文件中的有效数据与文件结束标记区分开来。C语言采取的解决方法是, getchar函数在没有输入时返回一个特殊值,这个特殊值不能与任何实际字符相混淆。这个值叫做EOF(End Of File,文件结束)。必须把c说明成一个大到足以存放getchar函数可能返回的各种值的类型。之所以不把c说明成char类型,是因为c必须大到除了能存储任何可能的字符外还要能存储文件结束符EOF。因此,把c说明成int类型的。

EOF是一个在<stdio.h>库中定义的整数,但其具体的数值是什么并不重要,只要知道它与char类型的所有值都不相同就行了。可以通过使用符号常量来保证EOF在程序中不依赖于特定的数值。

#include <stdio.h>
/* 用于将输入复制到输出的程序;第2个版本*/
main ( )
{
    int c;
    while ( (c = getchar ( ) ) != EOF )
        putchar ( c );
}

在这一程序中,while循环语句先读一个字符并将其赋给c,然后测试该字符是否为文件结束标记。如果该字符不是文件结束标记,那么就执行while语句体,把该字符打印出来。再重复执行该while语句。当最后到达输入结束位置时,while循环语句终止执行,从而整个main程序执行结束。

#include <stdio.h>
#define IN 1 /* 在单词内*/
#define OUT 0 /* 在单词外*/
/* 统计输入的行数、单词数与字符数*/
main ( )
{
    int c, nl, nw, nc, state;
    state = OUT;
    nl = nw = nc = 0;
    while ( (c = getchar ( ) ) != EOF ) {
        ++nc;
        if ( c =='/n' )
            ++nl;
        if ( c == ' ' ||c == '/n' || c == '/t' )
            state = OUT;
        else if ( state == OUT ) {
            state = IN;
            ++nw;
        }
    }
    printf("%d %d %d/n", nl, nw, nc);
}


注: "stdio.h" 里定义的 EOF 宏值为(-1)

编写一个程序,把它的输入复制到输出,并在此过程中将相连的多个空格用一个空格代替。
void main()
{
    char c;
    int i = 0;
    while((c = getchar())!= EOF)
    {
        if(c == ' ')        
        {
            i++;
            if(i > 1)
                continue;
        }
        else
            i = 0;
        putchar(c);
    }
}

putchar与getchar以及对缓冲区的理解

putchar与getchar以及对缓冲区的理解 getchar getchar 从标准输入里读取下一个字符。该函数声明在stdio.h头文件中,使用的时候要包含stdio.h头文件。如: #in...

C语言顺序程序设计详解(scanf,printf,getchar,putchar等函数)

一、C语言语句概述: C语句分为以下五类: :表达式语句->表达式语句由表达式加上分号“;”组成。 :函数调用语句->由函数名、实际参数加上分号“;”组成。 :控制语句-> ...

输入和获取字符的使用(putchar,getchar,puts,gets,fputc,fgetc,fscanf,fprintf)

在C语言中,对于字符和字符串的处理非常多,如何正确的读取和输入字符和字符串是非常使用的。 1.getchar和putchar getchar是读取输入的一个字符,而putchar是将输入的一个字符输出...

C语言中的getchar, scanf, putchar, printf学习

输入和输出功能并不是C语言本身的组成部分,他们属于标准库范围,使用输入输出相关函数是必须写:#include 。文件名用尖括号括起来时,预处理器将到特定位置查找而不是在工程中。   常用的标准的输...

C语言的单字符IO之getchar()和putchar()

C语言的单字符IO之getchar()和putchar() 图片来源-百度图片引言getchar()和putchar()每次只处理一个字符。你可能认为这种方法很低级,与我们的阅读方式相差甚远。但...

C++字符输入getchar()和字符输出putchar()

C++还保留了C语言中用于输入和输出单个字符的函数,使用很方便。其中最常用的有getchar函数和putchar函数。 putchar函数(字符输出函数) putchar函数的作用是向终端输出...
  • qcq8208
  • qcq8208
  • 2017年02月07日 18:53
  • 617

C语言读取的结束方法及getchar()和putchar(int)、gets

EOF 是个宏,其意思是:End Of File,文件尾标志。 从数值上来看,就是整数-1 在C语言的头文件中对其进行了宏定义: stdio.h:    # define EOF (-1) 当读文...

字符的输入和输出即:getchar和putchar

有关C语言的字符输入和字符输出。

getchar()与putchar()概念及相关用法

1、getchar()      函数原型:int getchar(void)      当程序调用getchar()时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按...

getchar和putchar

在标准库中有数个函数用来控制一次读写一个字符,其中最简单的就是getchar和putchar这两个函数。getchar函数在被调用时从文本流中读入下一个输入字符并将其作为结果值返回。示例程序如下:  ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:getchar 与 putchar
举报原因:
原因补充:

(最多只允许输入30个字)