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

时间:2017-11-28 12:45:43

标签: c arrays scanf eof

我正在尝试将(15个或更少)数字扫描到变量/数组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;
}

2 个答案:

答案 0 :(得分:2)

您需要&&而不是||

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

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

答案 1 :(得分:1)

代码有3个问题

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

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

  3. scanf( "%d", &array[i])返回0,1或EOF。仅在1上,代码设置为array[i]@Some programmer

  4. 固定

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