Чтение целых чисел в 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]);
}