Чтение целых чисел в C до нажатия клавиши ENTER

Я хотел бы прочитать переменное число целых чисел в массиве, пока пользователь не нажмет Enter. Мне удалось добиться этого, сделав следующее:

printf("Give the numbers in the array, then hit ENTER: \n");
scanf("%d", &array[i]);
i++;
no_elements++;

while (scanf(line, "%d", &array[i++])== 1) {
    scanf("%d", &array[i]);
    i++;
    no_elements++;
}

С другой стороны, я нашел это на веб-сайте, и я не до конца понимаю тест scanf. Это работает в том, что чтение останавливается, когда я нажимаю ввод. Однако число прочитанных целых чисел в конечном итоге равно единице (проверил это, добавив инструкцию printf). Это почему? Как еще я мог сделать то же самое?

Примечание: переменная i в начале имеет значение 0, как и no_elements; Строка объявлена ​​как символ строки [20].

3 ответа

#include <stdio.h>

int main() {
    int i=0, no_elements = 0;
    int array[16];

    while(no_elements<16){
        char line[32];
        int n;
        printf("Give the numbers in the array, then hit ENTER: \n");
        fgets(line, sizeof(line), stdin);
        if(*line == '\n')
            break;
        if(1==sscanf(line, "%d", &n))
            array[no_elements++]=n;
    }
    printf("%d\n", no_elements);
    return 0;
}
#include<stdio.h>
void main()
{int a[100],i,sum=0,count=0;
char c;
for(i=0;c!='\n';i++)
{scanf("%d%c",&a[i],&c);
 count++;
}
for(i=0;i<count;i++)
    {sum=sum+a[i];}
printf("%d",sum);
getch();}`

В C: если ввод задан как целые числа, разделенные пробелом, и после последнего ввода, если нажата клавиша ввода, мы можем читать следующим образом:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int ar[10],i=0;
    char c=' ';
    while(c!='\n'){
        scanf("%d%c",&ar[i++],&c);
    }
    while(i>0)
        printf("%d\t",ar[--i]);
 }
Другие вопросы по тегам