|
|
10鱼币
关于Enter有\R\N的一个问题,所以做了个实验(TC2.0):
#include "stdio.h"
main()
{
int a[4];
scanf("%d", a);
*(a+1) = getchar();
printf("*(a+0) = %d, *(a+1) = %d", *(a+0), *(a+1));
}
7
*(a+0) = 7, *(a+1) = 10
---------------------------------------------------------------------------
main()
{
int a[4];
*(a+0) = getch();
*(a+1) = getch();
printf("(a+0) = %d, (a+1) = %d", *(a+0), *(a+1));
}
I: Enter Enter
O:(a+0) = 13, (a+1) = 13
--------------------------------------------------------------------------------
#include "stdio.h"
main()
{
int a[4];
*a = getch();
*(a+1) = getchar();
printf("*(a+0) = %d, *(a+1) = %d", *(a+0), *(a+1));
}
I: a enter
O:
*(a+0) = 97, *(a+1) = 10
我也搜了些资料,我觉得getch()是立即接收按下键盘的输入;getchar()是接收键盘缓存区的,直到\n就结束.
通过上面实验,我觉得
---------------------------
第二个程序:按下7enter
----------------------
键盘缓存区:
7 \n \r
getch读了7 getchar读了\n
getchar是接收双字符,假设enter是\R\N的话,getchar把两个字符都接收了,取第二个,所以为10
getch只接受当前即输入的,所有接收\R,\N就被舍去了
彻底乱了.....
求教各位,3Q
|
|