for(int i = 0;i<10;i++)
    for(int j = 0;j<2;j++)
        scanf("%c",&a[i][j]);

看到上面的例子,你会怎么输入呢? 是像这样输入:abcdefghij1234567890,还是这样:a b c d e f g h i j 1 2 3 4 5 6 7 8 9 0

为什么会这样呢?因为之前我曾探讨过 scanf 的一些细节。

对于字符输入来说,其实是不需要空格的!

例如,scanf("%c", &a),但这样会有个问题,它会把回车符也一起读取进来。解决方法有两个:

过滤掉回车符(利用 ASCII 码)。 在 scanf 中自定义分隔符。 其实,前面说的还不完全准确。按照上面的例子,当你输入了 20 个字符后,按下回车键,这时,程序将进入下一步操作,并最终遇到一个 scanf("%c", &b)。恭喜你,此时的回车符会直接被读取进去...

为了更方便地处理这个问题,可以做一些改进:

for (int i = 0; i < 10; i++)
    for (int j = 0; j < 2; j++)
        scanf("%c", &a[i][j]);
// 防止空格被读取
getchar();
scanf("%c", &b);

getchar() 可以帮助你过滤掉空格和回车符!