getchar() putch()的使用

getchar()  putchar()

getchar()获取从键盘输入的单个字符  putchar()将单个字符发送至屏幕

虽然getchar()获取单个字符,但除非按下Enter 键 否则控制不会返回程序

getchar() 函数命令C程序将输入放入缓冲区(buffer),按下Enter键后 缓冲区的内容以每次一个字符释放

所以 1.没有按下Enter键就可以按下Backspace 键修正已键入的错误字符

2.如果不处理按下的Enter键 , Enter键将留在缓冲区

例如:

first=getchar();

last=getchar();

如果要键入GT   则G应该存入变量first中 T应该存入last中  然而并非如此

第一个getchar()在用户按下Enter之前不会结束 按下 G后 ,G 留在缓冲区 只有按下Enter ,G 才会离开缓冲区进入程序 -- 但此时Enter 键却留在了缓冲区  所以第二个getchar()会将Enter 键(\n)发送给last   需要额外的getchar()才能继续读取T

修复方案:

first=getchar();

x=getchar();//x:储存键入过程中的换行符 不需要处理变量x

last=getchar();

x=getchar();

甚至不用将换行符储存在变量中

first=getchar();

getchar();//getchar()单独占一行  获取字符后什么都不做  即丢弃换行符

last=getchar();

getchar();

也可以输入两个大写字母后再按下Enter键

first=getchar();//G储存在变量first中

last=getchar();//T储存在变量last中

getchar();

getch()  putch()

getch()获取无缓区的单个字符 无需按Enter 按下键的同时 立即获取相应内容

first=getch();

last=getch();

getchar()不会在屏幕上显示键入内容 必须与putch()成对使用

first=getch();

putch(first);

last=getch();

putch(last);

getchar()  getch() 对比:

1,getch()比getchar()快 getch()不需要Enter键的按下就能直接获取键入的内容

2. getchar()没有按下Enter键就可以按下Backspace 键修正已键入的错误字符,而getch()无缓冲区 自然不能使用

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-28 02:46:53

getchar() putch()的使用的相关文章

hdu-2027题&&gets/getchar的区别

hdu-2027题(水题~~~) 统计每个元音字母在字符串中出现的次数. Input输入数据首先包括一个整数n,表示测试实例的个数,然后是n行长度不超过100的字符串. Output对于每个测试实例输出5行,格式如下: a:num1 e:num2 i:num3 o:num4 u:num5 多个测试实例之间由一个空行隔开. 请特别注意:最后一块输出后面没有空行:) Sample Input 2 aeiou my name is ignatius Sample Output a:1 e:1 i:1

getchar的研究

首先,getchar是一个宏,它的宏定义如下:#define getchar()  getc(stdin)#define getc(f) \ ((--((f)->level) >= 0) ? (unsigned char)(++(f)->curp)[-1] : \_fgetc (f)) 由上可以看出,getchar是getc()的宏,而getc()又是一个宏,通过代入流stdin进入宏展开:stdin:输入流,从键盘输入到内存,又符合文件操作的一些概念,所以用到了FILE的一些内容,不然

getchar 的用法,c语言

#include <stdio.h> using namespace std;/*www.quzhuanpan.com 转载请务必告知*/int main(){ int i=0; char ch[20]; getchar(); for(i=0; i<10; i++) { ch[i]=getchar();//后续的字符连续被读,所以第一个字符打不出来 } //读完的标志是按回车,并且把回车也当作字符 for(i=0; i<10; i++) { printf("%c"

getchar()的常见使用

getchar用来吸取回车符: 1.scanf("%c",&f); getchar();//吸取scanf缓冲区残留的回车符: scanf("%c",&o); 2.scanf("%c",&f); getchar();//吸取scanf残留的回车符:    scanf("%c %c",&o,%q);//此处若是“%c%c”则会出错.

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

#include <stdio.h> int main(int argc, const char * argv[]) { putchar(getchar());//这种方式就是输入一个字符串就会输出一个字符串,他们单位是:一个字符. for (int i =0 ; i <3; i++) { char c = getchar();//输入字符之后,按下"enter"键之后才会将字符串送到内存中 putchar(c); } //这样的循环的输出有点类似printf的输出方

各种输入速度比较(cin,scanf,getchar,pascal的read)

每个程序都是纯读入与1个输出.输入数据分别有1e2,1e3,1e4,1e5,1e6,1e7个数. C++使用getchar()读入是最快的.流输入是非常非常慢! 比赛还是用gechar比较好...

EOF:getchar()函数返回的一个特殊值

EOF 是个宏,其意思是:End Of File,文件尾标志. 从数值上来看,就是整数-1在C语言的头文件中对其进行了宏定义:libio.h: # define EOF (-1)当读文件操作时,遇到文件结束位置或读数据出错均会返回 EOF. (C语言中所有的输入输出操作均是按读文件的思想来设计的,或者说,是文件操作的一种特例,如getchar()就是fgetc(stdin) 的一个宏 )int getchar() ; //从标准输入缓冲区读取一个字符,成功返回该字符的ASCII值,出错,返回EO

getchar fflush 的分析笔记

问题描述: 统计从键盘输入的若干个字符中有效字符的个数,以换行符作为输入结束.有效字符是指第一个空格符前面的字符,若输入字符中没有空格符,则有效字符为除了换行符之外的所有字符. 示例代码: #include<stdio.h> void main() { int count=0,ch; printf("\nPlease input a line char: "); fflush(stdout); while((ch=getchar())!='\n') { if(ch==' '

Linux C 字符函数 getchar()、putchar() 与 EOF 详解

首先给出<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(); 这样就很有可能出现问题.因为getc