2015-11-10 2 views
0

Я пытаюсь взять до 10 целых входов, а затем распечатать их. Поэтому, если пользователь вводит 4 целых числа, программа будет распечатывать эти 4 и заканчивать программу. Если они входят в 10 он будет печатать все 10. Если они входят в более чем 10, это будет только распечатать первый 10.Как принять до определенного количества входов в C

Вот что я до сих пор:

int array[10]; 
    int i = 0; 

    while(i < 10 && scanf("%d\n", &array[i]) == 1){ 
     printf("%d ",array[i]); 
     i++; 

    } 

Это Безразлично» t достаточно работать, если я войду в 3 числа, он распечатает первые 2, а не распечатает третий, пока не нажму ctrl-D, и выйду, когда я снова нажму ctrl-D.

+2

[Почему Printf не смывать после вызова, если перевод строки не находится в строке формата?] (Http://stackoverflow.com/q/1716296/ 335858) – dasblinkenlight

+0

Включает ли пользователь цифры в одну строку или отдельные строки или какую-то смесь? Данные не доступны для программы до тех пор, пока не будет введена новая строка (если вы не наберете control-D). Данные не отображаются на выходе до тех пор, пока вы не напечатаете новую строку. –

+0

@JonathanLeffler Любая смесь, только до тех пор, пока они не будут использовать ctrl-D –

ответ

2

scanf("%d\n" не возвращается до тех пор, пока не будет получено небелое пространство (или EOF) после int.

Чтобы получить его, чтобы вернуться после int, используйте scanf("%d"

Смежные вопросы