gets、getchar、getch、scanf函数的区别

时间:2021-05-02 17:33:07

1、gets函数表示从标准输入输出流stdin读取一整行,以(\n或EOF)为标志位。出错或结束时返回NULL。行末尾的'\n'也会被读取出来,但是不会被写入。gets不检查写入数组的大小,使用时需注意保证有足够的空间,否则多出来的数据量则会覆盖原先的堆栈内容。使用方法如下:

	char s[100];
        char *str=s;
	printf("请输入不大于100个字符的字符串:");
	gets(str);
	printf("%s",str);

其中gets(s),s表示字符串变量,可以是数组名或者指针变量。上述的使用方式s表示的是指针变量,注意指针变量在使用前必须先初始化。与gets配合使用的是puts()函数。它会记录gets函数中是否有换行符,虽然gets函数不会将换行符写入数组。下面为测试的代码:

	char s[100];
        /*char *str=s;*/
        printf("请输入不大于100个字符的字符串:");
	gets(s);
	puts(s);
运行结果发现,puts可以记录下回车换行。

2、getchar函数gets函数表示从标准输入输出流stdin读取一个字符(包括回车键,其中的一种使用方法就是跟scanf函数配合使用,用于接收回车换行符),并返回这个字符,如果读取到末尾处,则返回EOF,注意到EOF不能用char表示,说明getchar函数返回数值类型是int型。所以将返回的数据类型定义为整型,使用方法如下:

	char c;
	printf("请输入字符串:");
	c=getchar();
	printf("%c",c); //只输出一个字符
3、getch函数是一个无回显函数,按下某一个键值后自动被接收,无需按回车键。使用过程中需注意它并不是一个标准的c函数,移植时需注意。

4、scanf函数在标准的输入流中将数据输入到指定的变量之中,读取成功时返回数据,读取到末尾或者出错返回EOF。

有个链接对于理解scanf函数的使用有很有帮助:http://zhidao.baidu.com/link?url=h_5SlTzZ_gFt9k0a_33tJKPhFnXcrPJVE3-qybqhjPSXfO3BnuURFJXjYZdjcSN8TLMuDJwIeNxp2j0IeTB9j_