请问下这个语句在这段代码中的作用是什么
int read_col_num(int col[ ], int max) {
int num = 0;
int ch;
while (num < max && scanf("%d", &col[num]) == 1 && col[num] >= 0)
num++;
if (num % 2 != 0) {
puts("输入的纵列不成对");
exit(EXIT_FAILURE);
}
while ((ch = getchar()) != EOF && ch != '\n') /* 没有弄清楚这个while意思 2022/12/23 */
;
return num;
}
通过测试打印ch的值发现,应该是读走缓冲区的多余的输入,直到换行符结束的作用,测试代码如下:
参考链接:
#include <stdio.h>
#include <stdlib.h>
int read_col_num(int col[ ], int max) {
int num = 0;
int ch;
while (num < max && scanf("%d", &col[num]) == 1 && col[num] >= 0)
num++;
if (num % 2 != 0) {
puts("输入的纵列不成对");
exit(EXIT_FAILURE);
}
while ((ch = getchar()) != EOF && ch != '\n'){
printf("in while,ch=%c,ch=%d\n",ch,ch);
}
printf("out while, ch=%d\n",ch);
return num;
}
int main(void){
int col[20];
int num = read_col_num(col,8);
printf("num=%d\n",num);
return 0;
}