【发布时间】:2019-03-23 13:31:51
【问题描述】:
我正在使用 scanf(带有循环)将整数分配到数组中。我希望用户只在终端中输入 8 个整数(它将在一行上)。如果他们输入 9 个数字,我希望程序打印一条错误消息。
我尝试将 if 语句与 scanf 结合起来。
int main(){
int input[8] = {0};
int countM = 0;
while(countM < 9){
if(scanf("%d", &input[countM]) < 8){
countM++;
} else{
printf("Invalid input");
exit(0);
}
}
return(0);
}
它没有检测到第 9 个输入。我希望它输出“无效输入”。
【问题讨论】:
-
如果您只想读取 8 个整数,请不要尝试将第 9 个整数读入
input[countM],因为这会导致未定义的行为(尝试访问input[8])。先尝试读取一个整数,然后只有在成功的情况下,才将其放入数组并增加计数。正如@xing 所指出的,请查看scanf的手册页。返回值指示读取了多少值或 EOF。与 8 的比较在这里毫无意义。