关于getchar、putchar
来源:互联网 发布:淘宝云客服在哪里 编辑:程序博客网 时间:2024/04/30 03:29
首先给出《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和后面的回车没有被利用。
这便是整个流程。
0 0
- 关于getchar、putchar
- 关于putchar与getchar
- getchar() putchar()
- getchar() putchar()
- 问个关于getchar与putchar的问题!(转载)
- getchar 与 putchar
- getchar( )与putchar( )
- getchar 与 putchar
- getchar putchar函数用法
- putchar()、getchar()、puts()、gets()
- getchar()、putchar()和EOF
- getchar与putchar
- getchar和putchar详解
- getchar()与putchar()
- getchar和putchar
- getchar putchar 浅析
- getchar() putchar() 用法
- getchar与putchar
- 一个简单的读取文件的Demo
- HTTP与HTTPS
- oj2510: 存钱
- 5大移动/前端开源项目你知道几个?
- css样式的使用(三)-变形与动画(上)
- 关于getchar、putchar
- leetcode_496 Next Greater Element I
- H5单页面手势滑屏切换原理
- asp.net中listview下嵌套gridview
- 备份文件的小程序
- 1003. 我要通过!(20)
- IDEA下maven项目无法提示和使用EL表达式的解决办法
- Unity 获取Mac地址 抛异常 EntryPointNotFoundException: getifaddrs
- [ZJOI2004]树的果实