很详细的一段关于scanf()和getchar()区别的代码

转载 2013年12月04日 17:12:36
#include<stdio.h>

void display(char cr,int lines,int width);

int main()
{
	int ch, a;
	int rows,cols;
	void display(char cr,int lines,int width);
	
	printf("Enter a character and two integers:\n");
	/*这里接受键盘输入,ch中保存输入的第一个字符, 如输入为a 1,2 asdsfdsdf sd回车*/
	while((ch=getchar())!='\n')    
	{
		/*以上面的输入为例,由于键盘缓冲区还有 1,2 asdsfdsdf sd,
		 *因此这里scanf不再接受键盘输入,而是直接取键盘缓冲区里的数据
		 *scanf函数匹配,由于是输入整型数,忽略前面的空格,%d先匹配到1,
		 *然后试着匹配下一个字符,下一个字符为逗号,不属于整型数,因此第一个
		 *%d匹配结束,将1保存到rows变量中,并将当前匹配不成的字符逗号放回键盘缓冲区
		 *然后格式控制串中的逗号开始匹配,正好与键盘缓冲缓冲区里的逗号匹配。
		 *然后就是第二个%d与键盘缓冲区的内容匹配,先匹配2,然后继续匹配,为空格,不属于整形数。
		 *scanf结束,第二个整数为2.此后键盘缓冲区还存在 asdsfdsdf sd.
		 */
		if(scanf("%d,%d",&rows,&cols)!=2)
			break;
		display(ch,rows,cols);
		/*这里也不进行键盘输入,直接读取缓冲区里的内容,当获取的字符不为回车符时,继续读取,
		 *依次读取 asdsfdsdf sd中的每一个字符后,最后一次读取的为回车符,循环退出.此时键盘
		 *缓冲区里已经没有内容了. 
		 */
		while((a=getchar())!='\n'){
			printf("a=%c\n", a);
			continue;
		}
		printf("Enter another character and two integers:\n");
		printf("Enter a newline to quit.\n");
	}
	printf("Bye.\n");
	return 0;
}

void display(char cr,int lines,int width)
{
	int row,col;
	
	for(row=1;row<=lines;row++)
	{
		for(col=1;col<=width;col++)
		putchar(cr);
		putchar('\n');
	}
}

输入函数scanf,gets,getchar简单区别测试

其实这些函数的具体应用和区别应该早就清楚了—- = =··· 但是鄙人实在是很foolish+shiftless。。所以每次遇到这些大同小异的函数们都会屁颠儿屁颠儿的找度娘。。今天实在是忍不了了。于...
  • keneyr
  • keneyr
  • 2016年03月07日 19:22
  • 2299

关于C语言里getchar和scanf的思考

今天在做《C primer plus》的课后习题的时候,有这样一道题: 编写一个程序读入一行输入,然后反向打印该行。 您可以把输入存储在一个char数组中;假定该行不超过255个字符。 回忆一下...
  • wangzheng1996123
  • wangzheng1996123
  • 2016年02月01日 19:40
  • 620

scanf和getchar的用法

scanf可以一次按照设定的输入格式输入多个变量数据.如 int d, float f, char str[20], scanf("%d%f%s",d,f,str); getchar...
  • leee7338
  • leee7338
  • 2015年06月12日 00:04
  • 1180

关于字符串gets()和scanf("%s")和getchar()的用法

分析如下::::: 对于字符串的输入,一直是很怕,在写代码的过程中都是避免使用,特别是当需要输入2个字符串的时候,经常出现如下的情况: #include"stdio.h" main() { ...
  • Yiyuan_chen
  • Yiyuan_chen
  • 2016年11月09日 21:54
  • 648

C语言中getchar()、gets()和scanf()的特点以及scanf产生的多余回车符问题

第三个问题是关于get()和getchar()这两个函数的。大家都知道,gets()函数作用是输入字符串,而getchar()是输入单个字符。但在一个小程序中,我发现了它们两个一些别的用法。    因...
  • daijingxin
  • daijingxin
  • 2016年01月08日 22:20
  • 2685

深入了解scanf() getchar()和gets()等函数之间的区别

---------------------------------------------------- | 问题描述一:(分析scanf()和getchar()读取字符)   | -------...
  • zqixiao_09
  • zqixiao_09
  • 2015年12月05日 21:35
  • 3425

getchar()和scanf("%c",ch)在用EOF判断结束时的区别

1、getchar() #include int main() { int c; while((c = getchar()) != EOF) putchar...
  • hanchengxi
  • hanchengxi
  • 2013年02月19日 16:49
  • 4419

C语言中scanf函数与输入缓冲区

讨论下scanf函数,输入缓冲区的关系  样例来源于算法竞赛入门经典第一章实验部分的内容,经过测试发现scanf函数对于整形数据在读入时会过滤掉 空格符 、换行符 和 水平制表符。按照提示,如果b的...
  • Veniversum
  • Veniversum
  • 2016年10月23日 14:38
  • 3172

关于getchar函数缓冲区的问题

首先,用getchar()函数进行字符的输入,并不是直接从键盘这个硬件中读取输入的字符,而是从“输入缓冲区”中得到的字符。输入缓冲区是一个字符的队列,其中存储了所有你尚未读取的字符。每次调用getch...
  • wuye
  • wuye
  • 2016年03月14日 23:13
  • 963

第一讲:c/c++基本字符数字输入printf(),scanf_s(),gets_s(),getchar()

简单的输入操作.总结今天学习的简单的输入输出函数对,3个标准输入函数:scanf_s()、gets_s()、fgets(),3个标准输出函数:printf()、puts()、fputs()...
  • xuan_zizizi
  • xuan_zizizi
  • 2017年04月07日 16:36
  • 589
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:很详细的一段关于scanf()和getchar()区别的代码
举报原因:
原因补充:

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