今天用scanf给一字符数组循环复制时遇到了问题
发现scanf会被跳过搜了一下网
原来scanf(或者getchar)是从标准scanf输入数组缓冲区中读取scanf输入数组的数据,而%c的字符scanf输入数组格式会接收回车芓符在scanf输入数组第一个scanf(或者getchar)时scanf输入数组字符后按回车结束,scanf输入数组缓冲中保存了这个回车符遇到第二个scanf(或者getchar)时,它自动把這个回车符赋给了ch2而如果第二个scanf的scanf输入数组格式不是%c时,由于格式不匹配这个回车符会被自动忽略,所以只有在连续scanf输入数组两个%c的格式时才会出现这样的问题!
来清空scanf输入数组缓冲但是并非所有编译器都要支持这个功能(linux下的gcc就不支持,经我的GCC红帽5下测试)因为標准中根本没有定义 fflush(stdin)。