C语言的一道输入输出格式结果问题


有以下程序:
           #include main()
           { 
              char ab,c,d;
              scanf("%c%c",&a, &b);
              c=getchar();
              d=getchar();
              printf("%c%c%c%c\n",ab,c,d);
           }
           当执行程序时,按下列方式输入数据(从第1列开始,代表回车,注意:回车也是一个字符) 12 34 则输出结果是( D)

A1234
B12
C、4321
D、123

```c
这里为什么是D,可以讲解以下内部执行流程吗

```

错题
明明应该是12 3,c获取到了一个空格,d获取到了3
12 34是按顺序录入的,那么abcd的值也必然会遵循这个顺序
要么中间的空格被某些命令吃了,那么cd的值就分别是34
不可能先输入空格后输入3,反而c获得了3,d获得了空格