C语言的学习
参加新职课课程后,在完成每日一练以及做任务卡的过程中,遇到了很多的问题,通过写技术博客,整理遇到过的一些问题。
scanf的问题
1、缓冲区的概念
要说这个问题,就得先提起“缓冲区”的概念,想象输入设备(键盘)连接着一个叫“缓冲区”的东西,缓冲区的作用就是,把输入或者输出的内容先放进内存,而不显示或者读取。
2、scanf的机制
当你的程序执行到scanf时,它会以删除的方式从你的缓冲区读入数据,如果缓冲区是空的,就阻塞住,等待你从键盘输入,scanf函数接收到相应的数据项之后,在缓冲区中将这一数据项清除,scanf函数返回,程序继续执行。
3、空白字符的概念
一般,程序中所指的空白字符是指空格(space),回车(enter)和指标符(table)。
空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符,空白符可以是space,table,enter等等,直到第一个非空白符出现为止。
.scanf加\n
在输入1后,按回车,程序不会输出我们想要的结果1,当我们再次输入一个数,并再次按回车,它才会输出之前的数字1。这是因为空格字符(\n)使scanf读取但不存储输入中的所有连续的空格字符,直到遇到下一个非空格字符,它才会执行。
这是我在遇到这些问题时,将自己找到的解答通过自己的理解进行整理,肯定会有不足之处,如果有大佬看见了,希望不吝赐教。
.