关于C语言读取字符的函数-scanf函数getchar函数/gets函数

关于输入缓冲区

这里简单了解,不做过多描述。

        当在键盘上输入字符/字符串后,输入的字符/字符串都会被缓冲区读取后放进缓冲区内储存,而之后我们调用scanf函数/getchar函数/gets函数操作时都需要在缓冲区内取出之前存入的字符/字符串。

如图例:

关于C语言读取字符的函数-scanf函数getchar函数/gets函数_第1张图片

 scanf函数:从键盘中读取数据,读取失败则返回EOF(-1)。

关于C语言读取字符的函数-scanf函数getchar函数/gets函数_第2张图片

getchar函数:读取/获取一个字符,返回值为int类型,读取失败则返回EOF。

 putchar函数:输出一个字符,读取失败则返回EOF。

关于C语言读取字符的函数-scanf函数getchar函数/gets函数_第3张图片

gets函数:读取一个字符串,读取失败则返回NULL指针。

关于C语言读取字符的函数-scanf函数getchar函数/gets函数_第4张图片

  在这里可以看出来,

         scanf函数读取不了空格后的数据,但是不仅可以读取字符/字符串还可以读取整数。

         getchar函数一次只能读取一个字符,也可以把一个整数当作字符读取。

         putchar函数类似于printf函数打印。

         gets函数可以读取字符/字符串,还可以把整数以字符串的形式读取,另外空格后的数据也可以被gets函数读取。

        此外,以上函数一般都是读取到 \n,就不再向后读取。

 通过以下几段代码,可以更加充分的理解:

1.请问运行以下代码会发生什么?

#include

int main()
{
	int ch = 0;

	while ( (ch = getchar() ) != EOF)
	{
		putchar(ch);
	}

	return 0;
}

       这里的逻辑是,在while循环内,getchar函数读取变量ch,只要不读取失败,就会一直读取,然后putchar打印出来,读取失败则不进入while循环。ctrl+z+回车 结束程序。

效果图:

关于C语言读取字符的函数-scanf函数getchar函数/gets函数_第5张图片

这段代码有什么作用? 其实它常常被我们用来清理缓存区。

比如接下来实现一段代码逻辑,

关于C语言读取字符的函数-scanf函数getchar函数/gets函数_第6张图片改进如下:​​​​​​​

关于C语言读取字符的函数-scanf函数getchar函数/gets函数_第7张图片

      说明:为什么会有 \n,因为每次键盘输入后都需要敲一下回车键/enter键,而回车键就相当于在输入缓冲区内存入一个\n。


以上仅供参考

你可能感兴趣的:(c语言,c语言,c++,开发语言)