getchar用法

1.从缓冲区读走一个字符,相当于清除缓冲区

2.前面的scanf()在读取输入时会在缓冲区中留下一个字符‘\n‘(输入完s[i]的值后按回车键所致),所以如果不在此加一个getchar()把这个回车符取走的话,gets()就不会等待从键盘键入字符,而是会直接取走这个“无用的”回车符,从而导致读取有误

3.
getchar()是在输入缓冲区顺序读入一个字符(包括空格、回车和Tab)
getchar()使用不方便,解决方法:
(1)使用下面的语句清除回车:
while(getchar()!=‘\n‘);
(2)用getche()或getch()代替getchar(),其作用是从键盘读入一个字符(不用按回车),注意要包含头文件<conio.h>

4.【转】
getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了,第一次getchar()时,确实需要人工的输入,但是如果你输了多个字符,以后的getchar()再执行时就会直接从缓冲区中读取了。
实际上是 输入设备->内存缓冲区->程序getchar  
你按的键是放进缓冲区了,然后供程序getchar  
你有没有试过按住很多键然后等一会儿会滴滴滴滴响,就是缓冲区满了,你后头按的键没有存进缓冲区.  
键盘输入的字符都存到缓冲区内,一旦键入回车,getchar就进入缓冲区读取字符,一次只返回第一个字符作为getchar函数的值,如果有循环或足够多的getchar语句,就会依次读出缓冲区内的所有字符直到‘\n‘.要理解这一点,之所以你输入的一系列字符被依次读出来,是因为循环的作用使得反复利用getchar在缓冲区里读取字符,而不是getchar可以读取多个字符,事实上getchar每次只能读取一个字符.如果需要取消‘\n‘的影响,可以用getchar();来清除,这里getchar();只是取得了‘\n‘但是并没有赋给任何字符变量,所以不会有影响,相当于清除了这个字符.还要注意的是这里你在键盘上输入ssss看到的回显正是来自于getchar的作用,如果用getch就看不到你输入了什么.

转自 即为将军http://www.cnblogs.com/jiangjun/archive/2012/05/16/2503676.html

时间: 2024-10-12 23:00:34

getchar用法的相关文章

WERTYU(getchar()用法)

题目连接:http://acm.tju.edu.cn/toj/showp.php?pid=13681368.   WERTYU Time Limit: 1.0 Seconds   Memory Limit: 65536KTotal Runs: 3158   Accepted Runs: 1346 A common typing error is to place the hands on the keyboard one row to the right of the correct posit

getchar()用法 【转】

1.从缓冲区读走一个字符,相当于清除缓冲区 2.前面的scanf()在读取输入时会在缓冲区中留下一个字符'\n'(输入完s[i]的值后按回车键所致),所以如果不在此加一个getchar()把这个回车符取走的话,gets()就不会等待从键盘键入字符,而是会直接取走这个“无用的”回车符,从而导致读取有误 3. getchar()是在输入缓冲区顺序读入一个字符(包括空格.回车和Tab) getchar()使用不方便,解决方法: (1)使用下面的语句清除回车: while(getchar()!='\n'

getchar()用法

getchar() 1.从缓冲区读走一个字符,相当于清除缓冲区 2.前面的scanf()在读取输入时会在缓冲区中留下一个字符'\n'(输入完s[i]的值后按回车键所致),所以如果不在此加一个getchar()把这个回车符取走的话,gets()就不会等待从键盘键入字符,而是会直接取走这个“无用的”回车符,从而导致读取有误 3.getchar()是在输入缓冲区顺序读入一个字符(包括空格.回车和Tab) getchar()使用不方便,解决方法: (1)使用下面的语句清除回车: while(getcha

输入字符,输出字符时加行号

问题描述: 可以标准输入一些字符,然后输出时,在每一行前面加上行号,每一行可以接受的字符没有限制. 代码实现: /*.c*/ #include <stdio.h> #include <stdlib.h> int main() { int ch = 0; int line = 0; int flag = 1;    //设定标志位,最后确定是否需要换行,打印行号 while((ch = getchar()) != EOF) { if(flag == 1) { flag = 0; li

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"

c语言中getchar的用法

1 /************************************************************************* 2 > File Name: getchar2.c 3 > Author: Mr.Yang 4 > Purpose:演示getchar输入整行文本 5 > Created Time: 2017年05月20日 星期六 09时22分42秒 6 **********************************************

getchar() getch() getche() gets() puts() scanf()的用法及区别

getchar() putchar(ch) scanf()   头文件stdio.h getch() getche()   头文件conio.h gets() puts()    头文件stdio.h getch()和getche()函数 都是从键盘上读入一个字符,但getch()函数不将读入的字符回显在显示屏幕上,而getche() 函数却将读入的字符回显到显示屏幕上. 而getchar()函数与上述两个函数的区别是:需等待输入直到按回车才结束, 回车前的所有输入字符都会逐个显示在屏幕上,但只

C语言——常用标准输入输出函数 scanf(), printf(), gets(), puts(), getchar(), putchar(); 字符串拷贝函数 strcpy(), strncpy(), strchr(), strstr()函数用法特点

1 首先介绍几个常用到的转义符 (1)     换行符"\n", ASCII值为10: (2)     回车符"\r", ASCII值为13: (3)     水平制表符"\t", ASCII值为 9: (4)     空字符"\0" ,ASCII值为0: (5)     空:NULL (即为0): (6)     空格键space, ASCII值为32: 2 常用输入输出函数 scanf() , 从缓冲区读入数据,以空格,制

hdu-2027题&amp;&amp;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