21-只读每行的首字符
7.7.2 只读每行的首字符
animals.c (程序清单7.11)的另一个独特之处是它读取输入的方式。运行程序时读者可能注意到了,当输入 dab 时,只处理了第1个字符。这种丢弃一行中其他字符的行为,经常出现在响应单字符的交互程序中。可以用下面的代码实现这样的行为:
while (getchar() != '\n')
continue; /* 跳过输入行的其余部分 */
循环从输入中读取字符,包括按下Enter键产生的换行符。注意,函数的返回值并没有赋给 ch ,以上代码所做的只是读取并丢弃字符。由于最后丢弃的字符是换行符,所以下一个被读取的字符是下一行的首字母。在外层的 while 循环中, getchar() 读取首字母并赋给 ch 。
假设用户一开始就按下Enter键,那么程序读到的首个字符就是换行符。下面的代码处理这种情况:
if (ch == '\n')
continue;