我的思想随着这些闪耀的绿叶而闪耀;我的心灵因了这日光的抚触而歌唱;

C语言中的getchar和putchar详解

C语言 致远 181℃ 0评论

首先给出《The_C_Programming_Language》这本书中的例子:

#include <stdio.h>

int main()
{
int c;
c = getchar();
while (c != EOF)
{
putchar();
c= getchar();
}
return 0;
}

这里主要解释下为什么要用int型来接受getchar函数。
很多时候,我们会写这样的两行代码:
char c;
c = getchar();
这样就很有可能出现问题。因为getchar函数除了返回终端输入的字符外,在遇到Ctrl+D(Linux下)即文件结束符EOF时,getchar ()的返回EOF,这个EOF在函数库里一般定义为-1。因此,在这种情况下,getchar函数返回一个负值,把一个负值赋给一个char型的变量是不正确的。

下面用一个题目来看其实如何获取字符和输出字符的。

#include "stdio.h"
main()
{
   char c,d,e,f;
   printf("please input two characters:\n");
   c=getchar();
   putchar(c);
   putchar('\n');
   d=getchar();
   putchar(d);
   putchar('\n');
   e=getchar();
   putchar(e);
   putchar('\n');
   f=getchar();
   putchar(f);
   putchar('\n');
   printf("c= %c\n",c);
   printf("d= %c\n",d);
   printf("e= %c\n",e);
   printf("f= %c\n",f);
}

运行后先输入“12”,回车,再输入“34”,回车。
运行环境是redhat gcc

运行结果:
please input two characters:
12
1
2

34
3
c=1
d=2
e=

f=3
下面具体解释一下:

getchar函数每次从缓冲区中得到一个字符,putchar函数每次输出一个字符。

首先输入了两个字符12,然后回车,注意这时写入缓存中的有3个字符1,2,回车。

程序中有四个getchar(),于是c=’1′,d=’2′,e=’\n’。

这时运行到f=getchar();输入缓存中的三个字符均被前三个getchar获取,这时需要用户输入,

这里输入了34

于是f=’3’,4和后面的回车没有被利用。

这便是整个流程。

转载请注明:致远博客 » C语言中的getchar和putchar详解

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址