新人!自学中!高手勿喷!多谢

新人!自学中!高手勿喷!谢谢!
本帖最后由 u014497083 于 2014-05-14 12:38:34 编辑
[/code]# include <stdio.h>
main ()
{
char c1, c2, c3, c4, c5, c6;
scanf ("%c%c%c%c",&c1, &c2, &c3, &c4);
c5 = getchar ();
c6 = getchar ();
putchar (c1);
putchar (c2);
printf ("%c%c\n", c5, c6);
}

这个码!运行以后 输入六个数:1 2 3 4 5 6
结果会输出第1第2   第5第6个数!即1256
可若输入123回车
        再输入45678回车
就会输出1245

反正第一行输出两个 第二行输出两个数(第一行输入数不超过6个)
为什么??是他只会输出c1 c2 的值??还是什么??求大神 解释!
请尽量详细点!谢了!
------解决方案--------------------
应该系统把“enter”作为字符输入进去了,先输“123”回车再输“4567”回车,那么6个字符初始化的值应该是c1=1;c2=2;c3=3;c4="enter"(就是“\n”);c5=4;c6=5;这样在输出的时候就是“1245”了,不过如果第一行输入的数字是5个的话,就是“c6=“enter””了,然后其他的都一样。你可以把所有的都输出一遍。这样方便理解。
------解决方案--------------------
对学习编程者的忠告:
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!

VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和
寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时
候。

不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!