我是编程和学习C的新手:
printf("What are your two initials?\n");
firstInit= getchar();
lastInit = getchar();
=======================================
printf("What are your two initials?\n");
firstInit= getchar();
lastInit = getchar();
getchar();
我知道在代码的第一部分中,如果我输入ZK作为缩写,则Z将放置在firstInit中,而由enter键表示的'\ n \将被放置在lastInit中。剩余的K将存储在后续的getchar()中。但是,在代码的第二部分中,我正在阅读的书说,如果我输入ZK作为缩写,则firstInit将保留Z,而lastInit将保留K。我只是认为需要清除缓冲区每次按Enter键之后。
抱歉,如果不允许发布该帖子,请在需要时将其删除。
这里有两个起作用的缓冲区:一个是键盘缓冲区,另一个是C标准缓冲区(输入缓冲区)。
当您按下键盘按钮时,字符将存储在键盘缓冲区中。因此,当您ZK
一起键入时,它仅存储在键盘缓冲区中。上按压Enter键时,它将进到与一个或多个字符C标准缓冲液\n
(在按下生成Enter键)。
getchar
逐字符读取输入的字符。在第一个代码中,第一个getchar
将读Z
入firstInit
,第二个getchar
将读K
入lastInit
。现在,仅\n
保留在输入缓冲区中。
第二个代码也是如此,只不过\n
第三个代码会被读取getchar
并丢弃。
如果Enter在每个字符Z
和之后按键K
,则必须在读取要存储K
在其中的第一个字符后清除输入缓冲区lastInit
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句