在给定数量的输入后停止 scanf 扫描 [c]

Stopping scanf from scanning after a given amount of inputs [c]

我正在尝试将(15 个或更少)数字扫描到 variable/array array[15],我希望它在输入为 EOF "CTR+Z" 时停止扫描,或者当输入了 15 个值时,我尝试使用 ( i < 15 ) 如下所示,但它似乎并没有真正完成工作,任何帮助将不胜感激

这是我的代码:

#include <stdio.h>

     int main(){
     int array[15], i = 0;
     printf( "Please enter a sequence A: " );
     while( (scanf( "%d", &array[i]) != EOF) || ( i < 15 ) ){
          printf( "%d ", array[i] );
          i++;
     }
     return 0;
}

您需要 && 而不是 ||

while( (scanf( "%d", &array[i]) != EOF) && ( i < 15 ) ){

再次接受的条件是没有EOF接受的输入小于15

代码有 3 个问题

while( (scanf( "%d", &array[i]) != EOF) || ( i < 15 ) ){  // problem code
  1. 需要使用 && 而不是 || 来确保两个测试都通过。

  2. 数组索引测试为时已晚。先做。

  3. scanf( "%d", &array[i]) returns 0、1 或 EOF。仅在 1 上,代码集 array[i]

固定

while(i < 15  && scanf("%d", &array[i]) == 1) {  // fixed code